Problema con UTF-8

Salve a tutti mi sto avvicinando da pochissimo al mondo della
programmazione che mi incuriosisce da tempo ma sono comunque alle prime
armi.Il mio problema è che quando provo ad effettuare un esercizio
utilizzando RUBY anteponendo prima la dicitura <<# encoding: urf-8>> a
quanto ho capito per permettere la lettura di alcuni caratteri, mi viene
fuori in esecuzione su prompt "invalid multibyte char (UTF-8)syntax
error unexpected tIDENTIFIER ecc…
Grazie per l’attenzione.

ciao Raffaele,

assicurati che sia:

encoding: UTF-8

PS. dalla versione 2 di ruby in poi (puoi controllare quella che stai
usando dal prompt eseguendo ruby -v)
utf8 è l’encoding di default, quindi non serve specificarlo

:: Andrea P.
:: email: [email protected]
:: mobile: +39 3926669268

Il giorno lunedì 11 novembre 2013, alle ore 17:08, Raffaele N. ha
scritto:

Ciao Andrea grazie per la risposta precedente, ma ancora non risolvo dal
momento che ogni qual volta provo ad utilizzare un carattere speciale ad
es. con accento tipo “è”, lui mi dà errore nell’esecuzione…
Avresti qualche suggerimento?
Grazie mille ancora.

mm… stai salvando il sorgente del tuo script in utf8?

:: Andrea P.
:: email: [email protected]
:: mobile: +39 3926669268

Il giorno marted 12 novembre 2013, alle ore 18:43, Raffaele N. ha
scritto:

Postare qualche riga di codice potrebbe essere d’aiuto…

Aloha
i

Scusa ma non capisco cosa intendi essendo ancora un novellino del
programma! cmq praticamente sto cercando di imparare ruby seguendo un
tutorial solo che ho questo problema…

Ok praticamente se provo a digitare quanto segue:

encoding: utf-8

puts ‘Ehilà come ti chiami?’

Successivamente eseguo e mi viene fuori questo errore:
invalid multibyte char (UTF-8)
syntax error, unexpected tIDENTIFIER, expecting end-of-input
puts ‘Ehilà come ti chiami?’

Nessun problema invece se provo a scrivere Ehila senza l’accento…

Ciao… non riesco a replicare il problema… ho provato sia con ruby
2 che 1.9.3 e senza toccare nulla il tuo codice funziona.

thesp0nge in ~/src/hacking(ruby-2.0.0-p247@hacking)
$ ruby ~/tmp/test.rb
Ehil come ti chiami?
thesp0nge in ~/src/hacking(ruby-2.0.0-p247@hacking)
$ rvm use 1.9.3
Using /Users/thesp0nge/.rvm/gems/ruby-1.9.3-p448
thesp0nge in ~/src/hacking(ruby-1.9.3-p448)
$ ruby ~/tmp/test.rb
Ehil come ti chiami?
thesp0nge in ~/src/hacking(ruby-1.9.3-p448)
$ cat ~/tmp/test.rb

encoding: utf-8

puts ‘Ehil come ti chiami?’

Se serve, il locale del mio terminale impostato cos:
$ echo $LANG
it_IT.UTF-8
$ echo $LC_CTYPE
it_IT.UTF-8

2013/11/13 Raffaele N. [email protected]:


Posted via http://www.ruby-forum.com/.


Ml mailing list
[email protected]
http://lists.ruby-it.org/mailman/listinfo/ml


$ cd /pub
$ more beer

The Application Security blog you really want to read:

Ciao,

ma il file utf8? non che quella “” iso-8859-1(5)?

Cosa restituisce il comando “file nomedelfileruby”? Esempio:

$ echo > prova
$ file prova
prova: UTF-8 Unicode text

probabile che il tuo file sia salvato con l’encoding sbagliato.

pietro

Il 13 novembre 2013 11:20, Raffaele N. [email protected] ha scritto:

Sto usando ruby 2.0

Io ho testato il codice su windows(ruby 1.9.3) e funziona anche a me. Ho
anche provato a salvare il file con encoding diversi da UTF e non
cambiava
niente.

Detto questo, stai per caso usando ruby 1.8? (l’errore proprio del
parser
ruby che non sa che fare con il char utf)

2013/11/13 Pietro G. [email protected]

salvi il valore restituito da gets in una variabile, poi sommi:

numero = gets.to_i
puts numero + 1

nota il to_i, necessario poich gets restituisce il numero come stringa
invece per le operazioni matematiche serve che sia ti tipo int.

riguardo l’encoding un problema dell’editor che usi, cerca su google
“nome_del_tuo_editor save as utf 8” per sapere come impostarlo
correttamente,

2013/11/14 Raffaele N. [email protected]

Scusate ancora volevo chiedervi come faccio a scrivere un programma che
mi chiede un numero (e fin qui ci riesco utilizzando il comando gets) e
successivamente come devo fare per fargli sommare 1 al numero che io ho
scelto?grazi infinite ancora per l’attenzione

ciao Rocco grazie della dritta per quel quesito, ma il problema delle
lettere accentate non l’ho ancora risolto pur avendo cercato su google
informazioni su come impostare l’editor SCITE che è quello che uso…

Purtroppo non ho mai utilizzato SCITE, ti consiglierei di provare
Sublime
Text, non dovrebbe darti problemi di sorta.

2013/11/14 Raffaele N. [email protected]

Ciao a tutt in ntanto voglio ringraziare tutto il forum per gli aiuti e
Rocco per il suggerimento .Difatti ora sto utilizzando Sublime e non ho
più il problema che riferivo in precedenza. Volevo chiedervi un altro
aiuto dal momento che continuo a cimentarmi con il fantastico mondo
della programmazione: il dubbio riguarda l’utilizzo del metodo “rand”.
L’esercizio è il seguente: “• Scrivi un programma “Nonna Sorda”.
Qualsiasi cosa tu dica alla nonna (qualsiasi cosa tu scriva al
programma), lei dovrebbe rispondere con un EH?! ALZA LA VOCE,
FIGLIUOLO!, a meno che tu non l’abbia gridato (scritto in lettere
maiuscole). Se gridi allora può sentirti (o almeno così pensa) e allora
ti risponde: NO, NON DAL 1938!. Per rendere questo programmino davvero
credibile, fai in modo che la nonna gridi un anno differente tutte le
volte; magari un numero casuale tra il 1930 e il 1950.” estrapolato da
http://corsorubyonrails.com Il problema mi si pone quando devo mettere
in atto la seconda parte cioè appunto per far scegliere alla “nonna” un
numero compreso tra il 1930 e 1950.
Vi ringrazio ancora per l’attenzione e mi scuso del disturbo.

Puoi usare #rand (builtin):

rand(1930…1950)

http://rubydoc.info/stdlib/core/Kernel#rand-instance_method

ciao,
A.

Ciao Andrea io ci provo in questo modo:
puts ‘Dimmi’
frase = gets.chomp
if frase == frase.downcase
puts ‘Eh alza la voce figliuolo!’
else frase == frase.upcase
anno = (rand(1930…1950))
puts 'NO NON DAL ’ + anno
end

Ma non esegue…dov’è l’errore?
Grazie ancora

ciao Andrea grazie per la risposta.
Apro un altro topic dove riporto anche l’errore

Forse sarebbe il caso aprire un topic a parte.

A occhio, direi che qualcosa errato nella logica. Se scrivo: ‘CiAo
NoNNa’
il tuo codice non funzioner, perch la frase sar diversa dia dalla
versione downcase che da quella upcase.

C’ inoltre un errore di sintassi:

if condizione

else if condizione2 #notare else + if

[else
…]
end

Sono sul cell quindi non posso sbizzarrirmi in esempi :slight_smile:

Una soluzione potrebbe essere testare solo la versione upcase, perch in
tutti gli altri casi la nonna non capisce :wink:

Per le prossime volte, apri un thread dedicato, non usarne uno solo per
N
problemi diversi :slight_smile:
Se ottieni errori, incolla anche quelli nella mail, cos dar pi facile
aiutarti.

Ciao,
A.