Convertir en UTF-8 unicode c++
Comment puis-je convertir ú dans une application c++ lorsque l'application reçoit le caractère de l'encodage UTF-8 %C3%BA et l'enregistrer comme l'équivalent unicode %FA. Je veux juste savoir comment je pourrais aller sur l'écriture de code pour effectuer ce processus d'encodage
- utfcpp.sourceforge.net?
- msdn.microsoft.com/en-us/library/dd374130(v=vs. 85).aspx ?
- Juste pour mémoire, en ce qui concerne votre titre: UTF-8 Unicode. Et le moyen standard de spécifier le point de code serait
U+00FA
(avec au moins 4 chiffres hexadécimaux, mais jusqu'à 6). - Vous recherchez les règles pour l'UTF-8, unicode et le codage d'url, etc. et de les implémenter dans le code. Je ne connais pas d'autre moyen de répondre à la question. Il pourrait vous aider à progresser si vous l'avez dit, précisément là où vous êtes coincé. Je voudrais diviser le problème en trois étapes, l'URL de décodage (convertir %xy etc. pour le caractère de valeur), UTF-8 pour point de code unicode (c'est convertit par exemple C3 BA FA, c'est l'étape difficile), encoder remettre le %s'). Chacune de ces étapes est plus simple que l'ensemble du problème, il suffit de choisir la méthode la plus simple et le code que la première.
Vous devez vous connecter pour publier un commentaire.
Je viens d'écrire un peu de code pour ce faire hier...
Je ne dis pas que c'est le "parfait" façon de le faire, mais il semble fonctionner pour tous les cas de tests, j'ai couru à travers elle (j'ai écrit les deux directions à cet effet).
Je vais vous laisse le soin de traduire "%NN" à une valeur entière.
utf32_to_utf8
etutf8_to_utf32
; le mot "unicode" est un peu surchargé et est parfois entendre utf-16.utf8_to_html
, et produit un"ሴ"
chaîne.%
signes, et ensuite de les convertir à partir de hex pour undeque<int>
. Le principe de base est que le début d'une UTF-8 code a au moins deux bits (d'où let & 0xc0 == 0xc0
), suivi par un bit zéro, et de "charge utile" bits (de 2 à 5 bits). Les octets restants ont10
au plus haut des deux bits, puis tous les 6 bits de "charge utile" dans les bits de poids faible. Dans votre cas, c'est un deux de codage octet, donc le premier octet contient la couche supérieure de 5 bits et le deuxième octet inférieur à 6. La BA est 10111010, donc donne 111010 (comme les bits de poids faible), C3 est 0x11000011, ajoute 00011, donnant 0001111010 = 0x0FA.