Conv$
ConvertedString = Conv$ ( String AS String , SourceCharset AS String , DestinationCharset AS String ) AS String
ConvertedString = Conv ( String AS String , SourceCharset AS String , DestinationCharset AS String ) AS String
Convertit une chaîne de caractères d'un jeu de caractères vers un autre. Un jeu de caractères est représenté par une chaîne de caractères comme
"ASCII"
,
"ISO-8859-1"
, ou
"UTF-8"
.
L'interpréteur Gambas utilise en interne le jeu de caractères UTF-8.
Le jeu de caractères utilisé par le système est retourné par
System.
Charset. C'était
ISO-8859-15
sur une Mandrake 10.2, mais maintenant tous les systèmes Linux que je connais sont basés sur
UTF-8
.
Le jeu de caractère utilisé par l'interface utilisateur graphique (GUI) est retourné par
Desktop.
Charset. Ce devrait toujours être
UTF-8
.
Notez que toutes les combinaisons de noms d’encodage ne peuvent être utilisées pour les paramètres
SourceCharset et
DestinationCharset et qu’un jeu de caractères codé peut avoir de nombreux alias.
La conversion se fonde sur la fonction
iconv() de la bibliothèque GNU qui peut convertir, parmi de nombreux autres encodages, l’encodage Turc (
ISO-8859-9
), Coréen (
EUC-KR
), Chinois simplifié (
GB2312
), Arabe (
WINDOWS-1256
), Cyrillique (
KOI8-R
) et Japonais (
ISO-2022-JP) en UTF-8 lisible par l’homme.
Pour une liste complète des conversions de texte internationales prises en charge, tapez
iconv -l
dans une ligne de commande.
La chaîne retournée est terminée en interne par un octet nul, mais cela ne sera pas suffisant si vous envoyez cette chaîne à une fonction externe qui attend, par exemple,
une chaîne terminée par plusieurs caractères nuls (aussi connue en C sous le nom de
wchar_t
ou
wide-character null-terminated string
), qui attend une chaîne terminée par
quatre octets nuls.
Pour contourner ce problème, ajoutez un octet nul à la chaîne
avant de la convertir :
Print Conv(MyString & Chr$(0), "UTF-8", "WCHAR_T")
De cette façon, vous serez sûr que la chaîne est terminée par un octet nul dans le jeu de caractères cible.
Erreurs
Exemples
DIM sStr AS String
DIM iInd AS Integer
sStr = Conv$("Gambas", "ASCII", "EBCDIC-US")
FOR iInd = 1 TO Len(sStr)
PRINT Hex$(Asc(Mid$(sStr, iInd, 1)), 2); " ";
NEXT
PRINT Conv$("\xE7\xC1\xCD\xC2\xC1\xD3\x20\xD0\xCF\xDE\xD4\xC9\x20\xCF\xDA\xCE\xC1\xDE\xC1\xC5\xD4\x20\xC2\xC5\xCA\xD3\xC9\xCB","KOI8-R","UTF-8")
Гамбас почти означает бейсик
Voir aussi