semplice differente uso di charset Codifica di caratteri - Wikipedia
edit: java usa la utf16, arduino la ansi extended
semplice differente uso di charset Codifica di caratteri - Wikipedia
edit: java usa la utf16, arduino la ansi extended
arduino in che senso ?
non e' una cosa hardware, arduino non c'entra.
intendi dire l'ide ?
a questo punto visto che l'ide gira in java perche' non dovrebbero usare lo stesso charset ?
se non c'e' un motivo valido io lo considero un bug, un errore, una scelta sbagliata, vedete voi ![]()
p.s. per la questione ZERO di cui sopra sai nulla ?
perchè secondo le tabelle ascii lo 0 ha un valore ben preciso, che non è zero ![]()
spetta non mi ritrovo
lo zero aggiunto ad un carattere inferiore a 126 non varia nulla, mentre sopra 126 varia
che spiegazione c'e' a questa cosa ?
puoi fare benissimo la prova, cioe' parlo di farlo su pc, apri un .txt e fai la prova con la tua tastiera
ALT0126 ~
ALT126 ~
ALT0176 °
ALT176 ?
Perché come ti ho detto la tabella ASCII usata da Arduino è quella ANSI e vale solo fino a 127, dal 128° valore in poi ricadi in quei charset che usano più di 1 byte.
Difatti il tuo problema con lo 0 lo hai solo se usi i codice sopra a 127, lo hai detto tu che ALT+126 è uguale ad ALT+0+126 mentre ALT+176 non è la stessa cosa di ALT+0+176 (PS: questa cosa vale solo per Windows, su Linux non puoi fare i caratteri extra con il tasto ALT più il codice sul tastierino numerico).
@lesto:
ma Java usa UTF-16 anche su sistemi UTF-8? Quasi tutte le distro Linux usano ormai UTF-8.
leo72:
@lesto:
ma Java usa UTF-16 anche su sistemi UTF-8? Quasi tutte le distro Linux usano ormai UTF-8.
java devi immaginartelo come un SO a parte, non a caso è una virtual machine ![]()
lesto:
java devi immaginartelo come un SO a parte, non a caso è una virtual machine
Io odio 'ste cose, sarà per questo che non ho mai potuto soffrire il Java? ![]()
che casini, e meno male che sono standard ![]()
io sono testato-ardo per carita', e come al solito metto troppa carne a cuocere e poi si mischiano le lingue
Problema1:
io credo che il serial monitor di arduino debba essere un serial monitor "standard" e quindi cosi' come tu hai ricevuto su gtkTerm correttamente "°" anche su serial monitor dell'IDE io credo sia giusto dover ricevere "°" e non "°"
Perche' mai dovrebbe essere giusto cosi' ? Siete daccordo ad aprire un bug ufficiale ?
Problema2:
Il discorso di scrivere ALT0xxx lo sto' facendo sul pc, senza Arduino, arduino non centra in questa cosa. Confermate tutto quanto detto ? Cioe' su windows, ma anche su linux, e' normale dover scrivere i codici ASCII extended aggiungendo uno ZERO ? Io l'ho dovuto scoprire sulla mia pelle, vi risulta una cosa risaputa ?
grazie dell'interesse ![]()
per l'alt non lo, però in effetti se il serial monitor usa il charset errato bisognerebbe aprire un bug
Testato:
Problema1:
io credo che il serial monitor di arduino debba essere un serial monitor "standard" e quindi cosi' come tu hai ricevuto su gtkTerm correttamente "°" anche su serial monitor dell'IDE io credo sia giusto dover ricevere "°" e non "°"
Perche' mai dovrebbe essere giusto cosi' ? Siete daccordo ad aprire un bug ufficiale ?
Il monitor seriale dell'IDE non è un terminale, è un programma che simula un terminale, quindi usa il charset di Java/Processing o quel che è, e come ha detto Lesto c'è un problema di charset differente su Java.
Problema2:
Il discorso di scrivere ALT0xxx lo sto' facendo sul pc, senza Arduino, arduino non centra in questa cosa. Confermate tutto quanto detto ? Cioe' su windows, ma anche su linux, e' normale dover scrivere i codici ASCII extended aggiungendo uno ZERO ? Io l'ho dovuto scoprire sulla mia pelle, vi risulta una cosa risaputa ?
Come ti ho spiegato, l'uso di ALT+combinazione numerica è una "scorciatoia" da tastiera prerogativa di DOS/Windows, non c'è su Linux. La "scorciatoia" è una combinazione di tasti che semplifica il raggiungimento di un comando o l'esecuzione di una particolare azione. Quindi non posso confermarti questa cosa né è possibile dire che sia una regola perché è dipendente dal SO.
prob1:
quindi la tua posizione e' che non debba essere considerato un bug arduinico ? di certo non e' un bug java perche' java puo' usare quello che vuole, dovrebbe essere l'ide ad adattarsi a lui ? non si risolve modificando il charset dell'ide per allinearlo con quello java ?
se apro il bug che mi rispondono secondo te ?
prob2:
ho capito il discorso scorciatoia, ma come influisce sul problema ? cioe' mi spiego meglio, sulla tua macchina linux come fai fisicamente ad inserire caratteri Ascii ?
Se con questo metodo che si usa su linux tu inserisci 176 e poi inserisci 0176 ricevi la stessa cosa ?
se anche a te per far apparire il grado "°" devi fare 0176 significa che non dipende dal concetto di scorciatoia, viceversa se a te con il semplice 176 ti funge allora abbiamo scoperto che lo ZERO e' un'invenzione windows
Testato:
prob1:
quindi la tua posizione e' che non debba essere considerato un bug arduinico ? di certo non e' un bug java perche' java puo' usare quello che vuole, dovrebbe essere l'ide ad adattarsi a lui ? non si risolve modificando il charset dell'ide per allinearlo con quello java ?
se apro il bug che mi rispondono secondo te ?
Non dico che non sia un bug ma un comportamento diverso dal solito.
Puoi provare a segnalarlo sul sito internazionale nella sezione apposita, vediamo cosa ti rispondono.
prob2:
ho capito il discorso scorciatoia, ma come influisce sul problema ? cioe' mi spiego meglio, sulla tua macchina linux come fai fisicamente ad inserire caratteri Ascii ?
Se con questo metodo che si usa su linux tu inserisci 176 e poi inserisci 0176 ricevi la stessa cosa ?
se anche a te per far apparire il grado "°" devi fare 0176 significa che non dipende dal concetto di scorciatoia, viceversa se a te con il semplice 176 ti funge allora abbiamo scoperto che lo ZERO e' un'invenzione windows
Su Linux ho altre scorciatoie da tastiera. Tu per fare il tilde, ~, devi fare ALT+126, mi pare. Io ALTGR+ì. Per fare la graffa aperta, {, tu devi fare ALT+125, io SHIFT+ALTGR+è oppure ALTGR+7. ® lo ottengo con ALTGR+SHIFT+R.
Non credo che esista una corrispondenza della sequenza ALT+numero su Linux, per lo meno io non la conosca.
Aggiornamento. Il sistema c'è anche su Linux, ma è complicato e non lo conoscevo.
http://pthree.org/2006/11/30/its-unicode-baby/
Si tratta di premere CTRL+SHIFT+U+codice unicode.
Credo comunque di capire il caso tuo. Mi sa che quando fai ALT+3 cifre usi il vecchio sistema del DOS di inserimento dei caratteri, dove scrivevi il valore decimale. Inserendo 4 cifre usi il sistema UTF, passando quindi 2 byte. Prova con ALT+00A2, se te lo prende e stampa "¢".
ALT+00A2 non posso farlo, appena premo la A il pc fa un suono e non accetta l'inserimento
fino alla tilde 126 non ci sono problemi, l'ascii standard risponde senza mettere lo "0" e sulla estesa che serve.
Quindi per metterti nelle mie stesse cndizioni tu devi provare
CTRL+SHIFT+U+176 e poi
CTRL+SHIFT+U+0176
176, il °, e' appunto nella parte estesa dell'ascii, a me con o senza zero risponde diversamente, vediamo se anche sul tuo e' uguale
ho scoperto una cosa, su un file.txt devo aggiungere lo zero, quindi ALT0176, sulla barra indirizzi di Chrome, non serve lo zero ![]()
Testato:
ALT+00A2 non posso farlo, appena premo la A il pc fa un suono e non accetta l'inserimentofino alla tilde 126 non ci sono problemi, l'ascii standard risponde senza mettere lo "0" e sulla estesa che serve.
Fino a 127. I primi 127 caratteri sono l'ANSI ASCII per cui sono uguali per tutti. E' dal 128mo in poi che le cose cambiano.
Quindi per metterti nelle mie stesse cndizioni tu devi provare
CTRL+SHIFT+U+176 e poi
CTRL+SHIFT+U+0176
Io ottengo ? ![]()
Ma questo perché i codici sono esadecimali per cui(0)17616 corrisponde a 37410, quindi non corrisponde.
Però con CTRL+SHIFT+U+00B0 (00B016 -> 17610) ottengo ° ![]()
almeno sul tuo sistema la spiegazione c'e', sul mio quello zero resta non spiegato, perche' non e' nemmeno un discorso esadecimale
non capisco perche se uso lo sketc di Astro postato in prima pagina aggiungendoci la funzione di stamp a su display:
Serial.println ( caratteri );
lcd_print(caratteri);
su serial monitor ho la stampa dei caratteri ascii, mentre su lcd mi conta con mumeri, 120-121-122
come faccio a dire che anche lcd print deve ragionare in caratteri e non a numeri decimali ?