2009-05-15 7 views
0

-je besoin de convertir des chaînes d'un encodage (UTF-8) à un autre. Le problème est que dans le codage cible, tous les caractères de la fonction de codage source et de libc iconv (3) ne sont pas remplacés dans une telle situation. Ce que je veux, c'est être capable d'effectuer une conversion, mais dans la chaîne de sortie, ces caractères problématiques ont-ils été remplacés par un symbole, disons '?'.conversion Failsafe entre les différents codages de caractères

Le langage de programmation est C ou C++.

est-il un moyen de résoudre ce problème?

Répondre

2

Essayez annexant "// TRANSLIT" ou "// IGNORE" à la fin de la chaîne charset de destination. Notez que ceci n'est supporté que sous la bibliothèque GNU C.

De iconv_open(3):

//TRANSLIT 
      When the string "//TRANSLIT" is appended to tocode, translitera‐ 
      tion is activated. This means that when a character cannot be 
      represented in the target character set, it can be approximated 
      through one or several similarly looking characters. 

    //IGNORE 
      When the string "//IGNORE" is appended to tocode, characters 
      that cannot be represented in the target character set will be 
      silently discarded. 

Alternativement, sauter manuellement un caractère et insérer une substitution dans la sortie lorsque vous obtenez -EILSEQ de iconv(3).

0

Regex sur la base des gammes de source traduisibles utilisées pour échanger un espace réservé correspondant à des caractères pour qui ne correspondent pas.

Questions connexes