Question Nodejs convertit la chaîne en UTF-8


De ma base de données im obtenir la chaîne suivante:

Johan Öbert

Ce qu'il devrait dire, c'est:

Johan Öbert

J'ai essayé de le convertir en utf-8 comme ceci:

nameString.toString("utf8");

Mais toujours le même problème.

Des idées?


17
2017-11-24 12:08


origine


Réponses:


Utilisez le utf8 module de npm pour encoder / décoder la chaîne.

Installation:

npm install utf8

Dans un navigateur:

<script src="utf8.js"></script>

Dans Node.js:

const utf8 = require('utf8');

API:

Encoder:

utf8.encode(string)

Encode toute chaîne JavaScript donnée (chaîne) en UTF-8 et renvoie la version codée en UTF-8 de la chaîne. Il génère une erreur si la chaîne d'entrée contient une valeur non scalaire, c'est-à-dire un substitut isolé. (Si vous devez également pouvoir encoder des valeurs non scalaires, utilisez plutôt WTF-8.)

// U+00A9 COPYRIGHT SIGN; see http://codepoints.net/U+00A9
utf8.encode('\xA9');
// → '\xC2\xA9'
// U+10001 LINEAR B SYLLABLE B038 E; see http://codepoints.net/U+10001
utf8.encode('\uD800\uDC01');
// → '\xF0\x90\x80\x81'

Décoder:

utf8.decode(byteString)

Décode toute chaîne UTF-8 donnée (byteString) comme UTF-8 et renvoie la version décodée UTF-8 de la chaîne. Il génère une erreur lorsque UTF-8 mal formé est détecté. (Si vous devez également être capable de décoder les valeurs non scalaires codées, utilisez plutôt WTF-8.)

utf8.decode('\xC2\xA9');
// → '\xA9'

utf8.decode('\xF0\x90\x80\x81');
// → '\uD800\uDC01'
// → U+10001 LINEAR B SYLLABLE B038 E

Ressources


18
2017-11-24 12:12



J'ai eu le même problème, lorsque j'ai chargé un fichier texte via fs.readFile(), J'ai essayé de définir l'encodage sur UTF8, il a gardé le même. Ma solution maintenant est la suivante:

myString = JSON.parse( JSON.stringify( myString ) )

après cela, un Ö est interprété comme un Ö.


10
2017-10-10 14:39



Lorsque vous souhaitez modifier l'encodage, vous passez toujours de l'un à l'autre. Donc vous pourriez partir de Mac Roman à UTF-8 ou de ASCII à UTF-8.

Il est aussi important de connaître l'encodage de sortie souhaité que l'encodage de la source actuelle. Par exemple si vous avez Mac Roman et vous le décodez de UTF-16 à UTF-8 vous allez juste le rendre brouillé.

Si vous voulez en savoir plus sur l'encodage, cet article contient beaucoup de détails:

Ce que chaque programmeur a absolument besoin de savoir sur les encodages et les jeux de caractères pour travailler avec du texte

Le npm pacakge codage qui utilise node-iconv ou iconv-lite devrait vous permettre de spécifier facilement l’encodage de source et de sortie souhaité:

var resultBuffer = encoding.convert(nameString, 'ASCII', 'UTF-8');

5
2018-02-07 09:26



J'ai eu le même problème avec json, utilisez simplement ceci:

JSON.parse(json or object)

0
2018-05-20 18:32



var utf8 = require("./utf8")

console.log(utf8.encode("NEAR DAGDI CHAWL"))

//utf8.js is not working properly

-9
2018-06-17 11:17