2010-04-19 5 views
-1

J'ai une piqûre dans unicode est "hao123-- 上网 的 上网 主页", tandis que dans utf8 dans la chaîne C++ est "hao123" 嶏 鎴 戠 婚 婚 婚 婚 婚 婚 婚 ", mais je devrais écrire Dans un fichier de ce format "hao123 \ uFF0D \ uFF0D \ u6211 \ u7684 \ u4E0A \ u7F51 \ u4E3B \ u9875", comment puis-je le faire. Je sais peu de choses sur cet encodage. Quelqu'un peut-il aider? Merci!utf8 et l'encodage

Répondre

2

Vous semblez mélanger UTF-8 et UTF-16 (ou éventuellement UCS-2). Les caractères codés en UTF-8 ont une longueur variable de 1 à 4 octets. Contrairement à cela, vous semblez vouloir écrire UTF-16 ou UCS-2 dans vos fichiers (je devine cela à partir des références de caractères \uxxxx dans votre chaîne de sortie de fichier).

Pour un aperçu de ces jeux de caractères, jetez un oeil à Wikipedia's article on UTF-8 et naviguez à partir de là.

est ici quelques-unes des bases très simples (très simplifié):

  • UCS-2 stocke tous les caractères exactement comme 16 bits. Il ne peut donc pas encoder tous les caractères Unicode, seulement ce que l'on appelle le "Basic Multilingual Plane". UTF-16 stocke les caractères les plus fréquemment utilisés sur 16 bits, mais certains caractères doivent être codés sur 32 bits. UTF-8 code les caractères d'une longueur variable de 1 à 4 octets. Seuls les caractères du jeu de caractères ASCII 7 bits d'origine sont codés sur 1 octet.

+0

Est-ce que n'importe quelle bibliothèque C++ pour le convertir en UTF16? – Dan

+0

Peut-être ce qui suit aidera: * Quelle est la meilleure bibliothèque Unicode pour C? * (Http://stackoverflow.com/questions/114611/what-is-the-best-unicode-library-for-c) et le * ustring library * (http://sourceforge.net/projects/ustring/) – stakx