Sto avendo un problema nella gestione delle stringhe per via del fatto che Gambas le tratta internamente come UTF-8.
In pratica devo convertire una stringa in un vettore di byte. Ma quando vado a gestire la stringa ottengo risultato sballati per via della conversione ASCI-UTF-8.
Ad esempio:
DIM a AS String
DIM i AS Integer
DIM r AS NEW Byte[]
a = "Prova@#ç°è"
Print Len(a)
Mi restituisce 13 e non 10: difatti convertendo la stringa in un vettore di byte ottengo 3 caratteri "0" extra, 1 all'inizio e 2 alla fine:
r.Resize(Len(a)) '<--qui r è di 13 celle
FOR i = 0 TO Len(a) - 1
r[i] = String.Code(a, i) '<--converto tenendo conto (o per lo meno credo...) del'UTF-8
NEXT
FOR i = 0 TO r.Count - 1
PRINT r[i]
NEXT
Mi dà nel terminale:
0
80
114
111
118
97
64
35
231
176
232
0
0
Se avessi trovato quella pagina non avrei scritto il post XD
Cmq posso dire che le info riportate lì non mi sembrano corrette perché il mio sistema dovrebbe già essere configurato per lavorare in UTF-8 (ecco l'output di "locale":
LANG=it_IT.UTF-8
LC_CTYPE="it_IT.UTF-8"
LC_NUMERIC="it_IT.UTF-8"
LC_TIME="it_IT.UTF-8"
LC_COLLATE="it_IT.UTF-8"
LC_MONETARY="it_IT.UTF-8"
LC_MESSAGES="it_IT.UTF-8"
LC_PAPER="it_IT.UTF-8"
LC_NAME="it_IT.UTF-8"
LC_ADDRESS="it_IT.UTF-8"
LC_TELEPHONE="it_IT.UTF-8"
LC_MEASUREMENT="it_IT.UTF-8"
LC_IDENTIFICATION="it_IT.UTF-8"
LC_ALL=
Eppure pare che le stringhe per Gambas siano esternamente in una codifica ed internamente in un'altra.
@Milo:
sarebbe carino, ma non sono un programmatore PHP per cui non so dove modificare il codice per creare un template per SMF per codici Gambas :P