node.js - utf8 - read buffer javascript
Nodejs convierte la cadena en UTF-8 (5)
De mi DB estoy obteniendo la siguiente cadena:
Johan Öbert
Lo que debería decir es:
Johan Öbert
He intentado convertirlo en utf-8 así:
nameString.toString("utf8");
Pero sigue siendo el mismo problema.
¿Algunas ideas?
Cuando quieres cambiar la codificación, siempre vas de una a otra. Así que puede ir de Mac Roman
a UTF-8
o de ASCII
a UTF-8
.
Es tan importante conocer la codificación de salida deseada como la codificación fuente actual. Por ejemplo, si tienes Mac Roman
y lo descodificas de UTF-16
a UTF-8
, simplemente lo harás confuso.
Si desea saber más sobre la codificación de este artículo, entre en muchos detalles:
La encoding npm pacakge que utiliza node-iconv o iconv-lite le permitirá especificar fácilmente qué fuente y codificación de salida desea:
var resultBuffer = encoding.convert(nameString, ''ASCII'', ''UTF-8'');
Tuve el mismo problema con json, solo usa esto:
JSON.parse(json or object)
Tuve el mismo problema, cuando fs.readFile()
un archivo de texto a través de fs.readFile()
, intenté establecer la codificación en UTF8, se mantuvo igual. Mi solución ahora es esta:
myString = JSON.parse( JSON.stringify( myString ) )
después de esto, un Ö es realmente interpretado como un Ö.
Utilice el módulo utf8 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 (cadena) de JavaScript dada como UTF-8 y devuelve la versión codificada en UTF-8 de la cadena. Emite un error si la cadena de entrada contiene un valor no escalar, es decir, un sustituto solitario. (Si también necesita poder codificar 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 decodificada en UTF-8 de la cadena. Lanza un error cuando se detecta un UTF-8 con formato incorrecto. (Si necesita poder decodificar también valores no escalares codificados, utilice 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
var utf8 = require("./utf8")
console.log(utf8.encode("NEAR DAGDI CHAWL"))
//utf8.js is working properly