Oppure

Loading
29/05/12 11:04
popp109
Salve ragazzi non riesco a capire se nel mio caso devo utilizzare un singolo o piu set di caratteri.

In pratica sto realizzando un linguaggio di programmazione(scusate se lo dico sempre in ogni nuova discussione ma è fondamentale per voi che dovete formulare la risposta.) e quindi sono partito lasciando invariato il locale con quello di default del c.Dopo aver introdotto le stringhe e i caratteri le cose sono cambiate con i caratteri multibyte e quindi ho dovuto impostare il locale in "it_IT.UTF-8" per poter trasformare i caratteri multibyte in caratteri estesi(con la funzione wctomb).
Tutto funziona,tutto va bene quando mi accorgo però che tutte le funzioni di input e viceversa usano come separatore decimale la virgola e non il punto dando problemi alla conversione di stringhe in float( esempio atof istringstream). googlando un po ho scoperto che ogni lingua possiede le proprie regole.Risolvere il problema della virgola non è difficile ma non riesco a capire se alla fine il mio linguaggio deve essere compilato su più lingue o visto che le regole del mio linguaggio le decido io devo utilizzare una sola lingua?

Cosa succerebbe se io impostassi la lingua it_IT.UTF-8 e poi l'eseguibile girasse su un pc con lingua turca o giapponese?
Io voglio che un giapponese veda quello che vedo io(sintassi del mio linguaggio) ma con la possibilità di inserire nelle Stringhe i caratteri giapponesi. (Ripeto sul mio pc funziona tutto ma in it_IT.UTF-8)

Cosa avreste fatto voi per risolvere questo problema?
aaa
29/05/12 19:48
HeDo

a parte il progetto fallimentare ed inutile, ti consiglierei di adottare una convenzione. ad esempio in C# il separatore dei decimali è il punto, punto!
non dipende dal locale della macchina nel quale viene compilato.
se invece il problema sorge in esecuzione, lì devi prevedere tutte le cultures disponibili, oltre alle culture custom che può impostare l'utente:

msdn.microsoft.com/it-it/library/…(v=vs.80).aspx
aaa
29/05/12 21:40
popp109
Il mio compilatore legge il sorgente in un file di testo (UTF-8)
Quando analizzo una stringa come questa che contiene caratteri unicode,
...
String pippo = "545455" + '3' + 0x010 + '\u00A9' + 1+2+6+4 + §;
...


il contenuto della variabile risulta essere corretta "54545.5S16©13§"

Ora all'inizio del main ho messo:
setlocale (LC_ALL, "it_IT.UTF-8");

perchè se lascio lo standard del c la conversione da carattere esteso a multibyte non funziona.

Ora ti chiedo 3 cose
1. siccome a me funziona, dovrebbe funzionare anche ad un cinese se gli passo l'eseguibile?
2. L'eseguibile quando si apre sulla macchina del cinese rimane codificato in it_IT.UTF-8?
3. Se la seconda domanda è si, il cinese se crea un file di testo con codifica utf-8 e scrive e compila
String pippo = "545455" + '3' + 0x010 + '\u00A9' + 1+2+6+4 + §;

dovrebbe riuscire ad ottenere il mio stesso risultato vero? --> "54545.5S16©13§"

grazie.

aaa