Italian Caratteri accentati

gepo

Member
Licensed User
Longtime User
Salve a tutti. Ho un problema con i caratteri accentati italiani. Ad es. la "è" di caffè di un file di testo creato in vb6, caricato in b4a con ReadString mostra al posto della "è" un geroglifico incomprensibile. Come risolvere? Grazie!
 
D

Deleted member 103

Guest
Salve a tutti. Ho un problema con i caratteri accentati italiani. Ad es. la "è" di caffè di un file di testo creato in vb6, caricato in b4a con ReadString mostra al posto della "è" un geroglifico incomprensibile. Come risolvere? Grazie!
Devi convertire il file in "UTF8".
 

gepo

Member
Licensed User
Longtime User
Ok. Dovrò trovare qualche funzione che me lo faccia in vb6 dall'interno. Grazie ancora!
 

sirjo66

Well-Known Member
Licensed User
Longtime User
Android gestisce le stringhe nel formato standard UTF8, e quindi devi preparare il tuo file in questo formato.
Su B4i esiste la funzione ReadString2 dove puoi specificare il set di caratteri, ma purtroppo su B4A non esiste questa funzione.
Puoi quindi modificare il programma in VB6 in modo che ti prepari il file in formato UTF8, oppure modificare il programma in B4A in modo che legga il file in formato binario e poi lo analizza modificandolo in UTF8, vedi tu da quale parte ti conviene di più fare la modifica

Sergio

Ad esempio (codice VB6):
B4X:
Public Function UTF8ENCODE(ByVal sStr As String) As String

For L& = 1 To Len(sStr)

lChar& = AscW(Mid(sStr, L&, 1))

If lChar& < 128 Then

sUtf8$ = sUtf8$ + Mid(sStr, L&, 1)

ElseIf ((lChar& > 127) And (lChar& < 2048)) Then

sUtf8$ = sUtf8$ + Chr(((lChar& \ 64) Or 192))

sUtf8$ = sUtf8$ + Chr(((lChar& And 63) Or 128))

Else

sUtf8$ = sUtf8$ + Chr(((lChar& \ 144) Or 234))

sUtf8$ = sUtf8$ + Chr((((lChar& \ 64) And 63) Or 128))

sUtf8$ = sUtf8$ + Chr(((lChar& And 63) Or 128))

End If

Next L&

UTF8ENCODE = sUtf8$

End Function
 
Last edited:

gepo

Member
Licensed User
Longtime User
Grazie per la risposta Sergio! Il mio programma ha come caratteristica fondamentale lo scambio continuo di file di testo tra vb6 e b4a che vengono letti da una parte e dall'altra. Prima c'era stato il problema del formato Unix LF contro Windows CLRF risolto con una funzione in vb6 che mi fa la conversione. Ora Utf8 contro ANSI per gli accenti. In vb6 ho trovato una funzione che mi fa la conversione in Utf8 senza BOM (ma ora proverò anche la tua). Meno male che in b4a ho scoperto che textwriter si può inizializzare indicando l'encoding. Per cui salvo il file di testo in due versioni. Una per b4a e l'altra da spedire a vb6. Naturalmente poi per tornare indietro devo modificare un'altra volta. Insomma... è un bell'intreccio dal quale, per me che sono alle prime armi, è un po' difficile venirne fuori...ma sono a buon punto...
 
Top