Décoder l'UTF-8 avec Javascript
J'ai le code Javascript dans un XHTML de la page web qui passe codé en UTF-8 cordes. Il doit continuer à passer à la version UTF-8, ainsi que le décoder. Comment est-il possible de décoder une chaîne UTF-8 pour l'affichage?
<script type="text/javascript">
//<![CDATA[
function updateUser(usernameSent){
var usernameReceived = usernameSent; //Current value: Größe
var usernameDecoded = usernameReceived; //Decode to: Größe
var html2id = '';
html2id += 'Encoded: ' + usernameReceived + '<br />Decoded: ' + usernameDecoded;
document.getElementById('userId').innerHTML = html2id;
}
//]]>
</script>
- Alors, quel est votre problème? donner un exemple.
- J'ai besoin de décoder le format UTF-8; Größe doit être décodé à partir de Größe
- Quelle est la
Größe
? Ce n'est pas encodée URL. - Ce n'est pas un problème, vous utiliser le JavaScript pour le résoudre. La solution serait d'ajouter un
meta
tag<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
et déclaration XML comme<?xml version="1.0" encoding="UTF-8"?>
. - Et de mettre le meta dans la première balise
<head>
section. Envoyer NOMENCLATURE des clients aussi faire le travail. - J'ai aussi besoin de garder cela codé dans le même script.
- Quoi? Tant que votre page web est codé en UTF-8, js permettra de traiter les chaînes de caractères comme codé en UTF-8, et
encodeURIComponent()
etdecodeURIComponent()
assumera les données en UTF-8. - où et pourquoi les extra déclaration xml?
- "Größe" n'est pas en UTF-8 (bon, il est peut-être, mais pas de façon intrinsèque), c'est un mess. Il est déjà cassé. Plusieurs fois, apparemment. Il n'a pas besoin d'être "décodé", partout où il est défaillant et devient cassé doit être corrigé. Donner plus d'informations sur le contexte, sinon il est difficile de vous aider.
- C'est la façon dont PHP codé apparemment, elle, semble pour le décoder l'amende juste. Il sait quoi faire avec elle après cela, il suffit de ne peut pas afficher le texte à droite.
- Ressemble
GröÃe
sur la page web pas décodé. - Ce que Chaque Programmeur Absolument Besoin De Savoir Sur les Codages Et les Jeux de Caractères Pour Travailler Avec du Texte et Gestion de l'Unicode Avant en Arrière Dans Une Application Web
- Où est votre viennent les données? et comment vous l'a livré à un client? La configuration de l'encodage est nécessaire pour chaque étape. allseeing-i.com/How-to-setup-your-PHP-site-to-use-UTF8
- Les données sont un nom de fichier UTF8_encode par PHP. Il est décodé dans cette page où il est finalement passé à PHP sur la même page (de travail).
- Si les données sont encodées en UTF8, il n'est pas nécessaire de décoder avant de les envoyer au client. pouvez-vous poster le tout dans votre question?
- Ne pas au hasard appliquer
utf8_encode
. Avez-vous besoin? Savez-vous pourquoi vous en avez besoin? - Si l'utilisateur tente de l'utiliser, alors oui. Ce n'est pas appliqués au hasard, mais en fait les noms de fichiers ne se cassera pas.
- Le "il" dans "utilisateur tente d'utiliser" se réfère à l'UTF-8? Ensuite, vous n'avez pas besoin
utf8_encode
. Pas nécessairement.utf8_encode
transforme l'encodage d'une chaîne de caractères ISO 8859-1 à UTF-8. Il essaie de le faire même si la chaîne est déjà en UTF-8. UTF-8 "Größe" →utf8_encode
→ "GröÃe" →utf8_encode
"GröÃÂe". Si vous l'appliquez lorsque vous n'en avez pas besoin, votre chaîne de vis. - Ahh, je doit être le double de codage et de décodage avec PHP/XHTML pour le nom de fichier. Est-il une meilleure façon de se faire un nom de fichier, comme le MD5? Ce que j'essaie de faire est encore Décoder UTF-8 avec Javascript!
- Je vais voter pour fermer cette question car c'est totalement trompeuse, et c'est seulement d'attirer tout aussi trompeuse réponses que seulement semer la confusion.
- Je suis d'accord avec les précédents gens sur la façon trompeuse de ce fil, mais ce que la plupart des gens sont à la recherche de est un pur javascript de codage/décodage de la bibliothèque de résoudre leurs problèmes d'encodage, c'est donc ce que j'ai trouvé lorsque j'ai googlé sur plus que juste UTF8 encodage/décodage : github.com/inexorabletash/text-encoding , il s'agit d'une pâte à partir de leur README : Tous les encodages de l'Encodage cahier des charges sont pris en charge, Profitez-en !
Vous devez vous connecter pour publier un commentaire.
Pour répondre à la question initiale: voici comment décoder l'utf-8 en javascript:
http://ecmanaut.blogspot.ca/2006/07/encoding-decoding-utf8-in-javascript.html
Plus précisément,
J'ai juste utilisé ce dans mon code, et il fonctionne parfaitement.
decodeURIComponent(escape(usernameReceived))
etdecodeURIComponent(usernameReceived)
, mais ni sont en train de transformerusernameReceived
. Pouvez-vous montrer quelques-code fonctionnel?<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
pour fonctionner correctement. merci!Cela devrait fonctionner:
Découvrez la JSFiddle démo.
Également voir les questions connexes: ici et ici
fromCharCode
accepte UTF-16 valeurs, donc vous devez le convertir en UTF-16 avant de l'appeler.@albert solution était la plus proche que je pense, mais il ne peut analyser jusqu'à 3 octets de caractères utf-8
Cela renvoie
{result: "parsed string", leftovers: [list of invalid bytes at the end]}
dans le cas où vous êtes l'analyse de la chaîne de blocs.EDIT: correction du problème que @unhammer trouvé.
{"result":"","leftovers":[195, 165]}
tandis que @Albert donne "å"utf8ArrayToStr([240,159,154,133])
me donne mon ""Mise à jour @Albert la réponse de l'ajout d'une condition pour emoji.
Ici est une solution de gestion de tous les points de code Unicode inclure supérieure (4 octets) des valeurs et pris en charge par tous les navigateurs (IE et d'autres > 5.5). Il utilise decodeURIComponent(), mais PAS le obsolète évasion/ne pas encoder les fonctions:
Testés et disponibles sur GitHub
Pour créer de l'UTF-8 à partir d'une chaîne:
Testés et disponibles sur GitHub
//Chaîne de caractères en Utf8 ByteBuffer
//Utf8 ByteArray à chaîne
Peut-être à l'aide de la textDecoder sera suffisant.
Pas pris en charge dans tous les navigateurs, cependant.
Mais il pourrait être suffisant si vous utilisez le tableau de concordance ou de tout autre cas d'utilisation où vous savez quel navigateur est utilisé.
Je pense que le plus simple serait d'utiliser un haut-js fonctions decodeURI() /encodeURI().
À l'aide de mon 1.6 KB bibliothèque, vous pouvez le faire
C'est ce que j'ai trouvé après un plus spécifiques de recherche Google que juste UTF-8 codage/décodage. donc, pour ceux qui sont à la recherche d'une conversion de la bibliothèque de convertir entre les encodages, ici vous allez.
https://github.com/inexorabletash/text-encoding
Coller à partir de pensions de readme
Tous les encodages de l'Encodage cahier des charges sont pris en charge:
utf-8 ibm866 iso-8859-2 iso-8859-3 iso-8859-4 iso-8859-5 iso-8859-6 iso-8859-7 iso-8859-8 iso-8859-8-je l'iso-8859-10 iso-8859-13 iso-8859-14 iso-8859-15 iso-8859-16 koi8-r koi8-u macintosh windows-874 windows-1250 windows-1251 windows-1252 windows-1253 windows-1254 windows-1255 windows-1256 windows-1257 windows-1258 x-mac-cyrillique gb18030 hz-gb-2312 big5 euc-jp iso-2022-jp shift_jis euc-kr remplacement utf-16be utf-16le x-défini par l'utilisateur
(Certains encodages peuvent être pris en charge sous d'autres noms, par exemple, ascii, iso-8859-1, etc. Voir l'Encodage pour plus d'étiquettes pour chaque encodage).
J'ai cherché une solution simple et cela fonctionne bien pour moi:
Seul problème que j'ai est j'ai parfois un caractère à la fois. Ce pourrait être par le design avec ma source de la arraybuffer. Je suis en utilisant https://github.com/xseignard/cordovarduino à lire la série de données sur un appareil android.
C3 BC
doit être décodé commeü
, mais votre réponse renvoieü
.