Pregunta Nodejs convierte cadena en UTF-8


De mi DB estoy obteniendo la siguiente cadena:

Johan Öbert

Lo que debería decir es:

Johan Öbert

Intenté convertirlo en utf-8 así:

nameString.toString("utf8");

Pero aún el mismo problema.

¿Algunas ideas?


17
2017-11-24 12:08


origen


Respuestas:


Utilizar el utf8 módulo de npm para codificar / decodificar la cadena.

Instalación:

npm install utf8

En un navegador:

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

En Node.js:

const utf8 = require('utf8');

API:

Codificar:

utf8.encode(string)

Codifica cualquier cadena de JavaScript (cadena) dada como UTF-8, y devuelve la versión codificada en UTF-8 de la cadena. Lanza un error si la cadena de entrada contiene un valor no escalar, es decir, un sustituto solitario. (Si necesita poder codificar también valores no escalares, use WTF-8 en su lugar).

// 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'

Descodificar:

utf8.decode(byteString)

Decodifica cualquier cadena codificada en UTF-8 (byteString) como UTF-8, y devuelve la versión descodificada en UTF-8 de la cadena. Lanza un error cuando se detecta UTF-8 malformado. (Si necesita poder decodificar también valores codificados no escalares, use WTF-8 en su lugar).

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

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

Recursos


18
2017-11-24 12:12



Tuve el mismo problema cuando cargué un archivo de texto a través de fs.readFile(), Traté de configurar la codificación en UTF8, guardó lo mismo. mi solución ahora es esta:

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

después de esto, Ö se interpreta realmente como un Ö.


10
2017-10-10 14:39



Cuando quiere cambiar la codificación, siempre va de uno a otro. Entonces puedes ir desde Mac Roman a UTF-8 o desde ASCII a UTF-8.

Es tan importante conocer la codificación de salida deseada como la codificación fuente actual. Por ejemplo, si tiene Mac Roman y lo descifras desde UTF-16 a UTF-8 lo harás incomprensible.

Si quieres saber más sobre la codificación, este artículo entra en muchos detalles:

Lo que todo programador debe saber sobre las codificaciones y los conjuntos de caracteres para trabajar con texto

El pacakge npm codificación que usa node-iconv o iconv-lite debería permitirle especificar fácilmente qué fuente y codificación de salida desea:

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

5
2018-02-07 09:26



Tuve el mismo problema con json, solo usa esto:

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