さまざまなサービスからページにテキスト文字列を配信する WebSocket があります。これらの文字列の一部には、奇妙な文字が含まれています。
時々私は次のような文字列を受け取ります:
「%91引用されたもの%92もの」
と同様です。この特定のサービスは、windows-1252 (または CP1252) 文字セットで文字列を送信することがわかりました。
JavaScriptを使用して、すべての文字列をUTF-8にするか、16進文字を変換するのに最適な(そして最速の)方法はどれですか?
さまざまなサービスからページにテキスト文字列を配信する WebSocket があります。これらの文字列の一部には、奇妙な文字が含まれています。
時々私は次のような文字列を受け取ります:
「%91引用されたもの%92もの」
と同様です。この特定のサービスは、windows-1252 (または CP1252) 文字セットで文字列を送信することがわかりました。
JavaScriptを使用して、すべての文字列をUTF-8にするか、16進文字を変換するのに最適な(そして最速の)方法はどれですか?
パーセントでエンコードされた Windows-1252文字があるようです。
replace
Windows-1252 コードから Unicode 文字へのマップを作成する場合、それらを に置き換えることができます。
var win1252toUnicode = {
...
91:"‘",
92:"’",
...
};
var encoded = "stuff stuff %91quoted stuff%92 stuff";
var decoded = encoded.replace(/%([0-9abcdef]{2})/ig, function(match, code) {
return win1252toUnicode[code];
})
これにより、次のようになります。
"stuff stuff ‘quoted stuff’ stuff"
以下はキャラクターマップです。
http://www.obkb.com/dcljr/charstxt.html
このコードを使用して、コード内の文字を置き換えます。
var str = "stuff stuff %91quoted stuff%92 stuff";
var res = str.replace("%91", "‘");
また、複数の置換については、この質問を確認してください。