2012-04-09 16 views
1

Ich verwende JSON.parse in JavaScript, um einige JSON zu analysieren. Es ist ein Problem, wenn ich den Text von this example kopieren. Ich doppelklicke, um den Text in meine Zwischenablage zu kopieren. Wenn ich alle Leerzeichen mit einem Regex ausstreiche, funktioniert es. Aber ich kann den beleidigenden Charakter nicht finden. Ich habe es versucht:Was ist das versteckte Zeichen, das JSON.parse zum Fehlschlagen bringt?

replace(/\t/g,''); 
replace(/\n/g,''); 
replace(/\r/g,''); 
replace(/\0/g,''); 
replace(/\x0B/g,''); 

... und immer noch das beleidigende Zeichen bleibt. Was kann ich tun, um es aufzuspüren? Wenn ich den Text in Windows in Editor einfüge, wird das Zeichen entfernt und JSON.parse funktioniert.

+0

ich verstehe es nicht, versuchen Sie es aus der Zwischenablage zu analysieren? Wenn Sie es kopieren, wo fügen Sie es ein, um es von js zu verbrauchen? –

Antwort

1

Wenn ich kopieren und einfügen es besteht die Einbuchtung des NO-BREAK SPACE Zeichen, Code 0x80, die in UTF-8 als die Sequenz 0xC2, 0xA0

codiert wird, wenn ich alle NO- ersetzen BREAK SPACE Zeichen durch normale Leerzeichen (0x20), ich kann es als JSON (mit Perl JSON::decode_json) analysieren.

+0

Ich versuche das, aber es funktioniert nicht: 'ersetzen (/ \ 0xc2 | 0xa0 \ g /, '');' – Jack

+0

@Jack: Ich kenne JavaScript nicht gut genug, um herauszufinden, warum das nicht arbeite nicht. –

+0

'.replace (/ \ 0x20 | \ 0x0A \ g /, '');' arbeitete für mich. '0xc2' sollte '0x20' sein. Ich habe einen Hex-Editor heruntergeladen, um die Zeichen zu finden, die ich ersetzen musste. – Jack