2013-11-24 4 views
13

Dal mio DB im ricevendo la seguente stringa:Nodejs convertire stringa in UTF-8

Johan Öbert 

Cosa si dovrebbe dire è:

Johan Öbert 

Ho cercato di convertirlo in utf-8 così:

nameString.toString("utf8"); 

Ma ancora lo stesso problema.

Qualche idea?

+3

Fai il ritorno del database 'UTF-8'? – robertklep

risposta

11

Utilizzare il modulo utf8 da npm per codificare/decodificare la stringa.

+2

Il modulo dident riesce a convertirlo, l'output è ancora errato – Alosyius

+1

L'ho usato. Funziona bene per me. –

7

Ho avuto lo stesso problema, quando ho caricato un file di testo tramite fs.readFile(), ho provato a impostare la codifica su UTF8, mantenendo lo stesso. la mia soluzione ora è questa:

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

dopo questo Ö viene interpretato come Ö.

+0

Questo ha funzionato per me. Tutto il resto, no. Il modulo UTF8 si blocca con un errore che manca una sorta di estensione sul tipo di stringa. Il modulo iConv non si installa perché vuole compilare durante l'installazione .. roba stupida. – Thraka

5

Quando si desidera modificare la codifica, si passa sempre dall'una all'altra. Quindi potresti andare da Mac Roman a UTF-8 o da ASCII a UTF-8.

È altrettanto importante conoscere la codifica di uscita desiderata come codifica sorgente corrente. Ad esempio, se hai Mac Roman e lo decodifichi da UTF-16 a UTF-8, lo renderai confuso.

Se vuoi sapere di più su codifica questo articolo va in un sacco di dettagli:

What Every Programmer Absolutely, Positively Needs To Know About Encodings And Character Sets To Work With Text

NPM pacakge encoding che utilizza node-iconv o iconv-lite dovrebbe consentire di specificare facilmente quale fonte e la codifica di uscita si vuole:

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

Se la stringa è in ASCII o in particolare in US-ASCII a 7 bit, la stringa è già in UTF-8. Non è necessaria alcuna conversione. Devi comunque convertire "Mac Roman" in UTF-8. – lwchkg

-7
var utf8 = require("./utf8") 

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

//utf8.js is not working properly 
+5

Questa risposta è potenzialmente utile, ma un po 'confusa - perché il commento su utf8.js non funziona? Se non funziona, perché fare riferimento ad esso nella risposta? Se funziona, perché il commento? :) – SilverSkin

+0

Immagino che "non" avrebbe potuto essere "adesso"? –