2016-06-02 6 views
3

Ich habe eine Properties-Datei, die ISO Latin mit codiert ist, aber mit Sonderzeichen als UTF-8-Escape-Sequenzen, zum Beispiel der folgende Zeichenfolge:Wie kann man UTF-8 Zeichen in Knoten ( u00f6) entschlüsseln?

Einstellungen l\u00f6schen 

ich eine Reihe von verschiedenen Kombinationen von iconv versucht habe, punycode und JSON.parse noch keiner von ihnen tun, was ich brauche, die diese Zeichenfolgen in ein richtiges UTF8-Format konvertiert, das mit JavaScript funktioniert. Egal wie ich es mache, die Strings haben immer ihre UTF8-Escape-Sequenzen, wenn ich sie drucke.

Beachten Sie, dass die Datei eine längere Datei mit einigen Zeilenumbrüchen usw. ist, wenn dies einen Unterschied macht.

Wie lese ich diese Datei so, dass die richtigen Zeichen ausgegeben werden?

+0

FYI, u JavaScript \ Escape-Sequenzen nichts mit UTF-8 zu tun haben. Die Nummer ist der Unicode-Codepunkt [[Referenz] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String#Escape_Notation)]. –

+0

Haben Sie 'console.log (" Einstellungen l \ u00f6schen ")" => 'Einstellungen löschen' probiert. JavaScript übernimmt automatisch die Konvertierung für Sie. – phuzi

+0

'JSON.parse ('' '+ str.split (' ''). Join ('\\' ') +'" ') 'oder' str.replace (/ \ u ([0-9a-fA -F] {4})/g, (m, cc) => String.fromCharCode ("0x" + cc)) ' – Thomas

Antwort

2

Sie müssen es entweder als String-Literal analysieren, also werden die Unicode-Codes von der Engine analysiert, daher müssen Sie sie in Anführungszeichen setzen, bevor Sie sie durch JSON.parse() laufen lassen.

JSON.parse('"' + str + '"'); 
//if you use " in your string, you would have to escape it 
JSON.parse('"' + str.split('"').join('\\"') + '"'); 

oder Sie suchen für die Unicode-Codes und ersetzen Sie sie auf eigene Faust

str.replace(/\\u([0-9a-fA-F]{4})/g, (m,cc)=>String.fromCharCode("0x"+cc)); 
+0

Die zweite Option ist, was ich wahrscheinlich tun würde –

+0

Aye, die zweite Option ist, was ich mit ging. – Rick

Verwandte Themen