2016-08-15 27 views
0

私は外部ウェブサービスからデータを受け取るanglejsアプリを持っています。Windows-1250からUTF8にエンコードするJavaScript文字列

私はUTF-8文字列を受け取っていますが、ANSIでエンコードされていると思います。例えば

私は

KLMĚLENÍ 

を表示したい場合、私はそれを変換するためには、decodeURIComponentを使用することを試みたが、それは動作しません

KLMÄšLENÃ  

を取得します。

var myString = "KLMÄšLENÃ"  
console.log(decodeURIComponent(myString)) 

私はおそらく何かが不足していますが、何も見つかりません。

おかげに関して、 エリック

+0

'Äš'は' S'が 'であるとして、UTF-8にすることはできません0x0161'となる。実際、UTF8でエンコードされた ''と 'Í'はそれぞれ '0xC4 0x9A'と' 0xC3 0x8D'という16進数のシーケンスになります。ここで '0x9A'Single Character Introducer_と' 0x8D' _Reverse Line Feed_は印刷不可能な文字なので、UTF-8にmojibakedされた 'KLM.LENÍ'は' '_Replacement Character_でコンソール上で 'KLMÄ LENÃ 'のように見えます。 – JosefZ

答えて

1

あなたはTextDecoderを使用することができます。サーバー側の出力をシミュレートするための(!。いくつかのブラウザがそれをサポートしていません注意して)

var xhr = new XMLHttpRequest(); 
xhr.open('GET', url); 
xhr.responseType = 'arraybuffer'; 
xhr.onload = function() { 
    if (this.status == 200) { 
    var dataView = new DataView(this.response); 
    var decoder = new TextDecoder("utf-8"); 
    var decodedString = decoder.decode(dataView); 
    console.log(decodedString); 
    } else { 
    console.error('Error while requesting', url, this); 
    } 
}; 
xhr.send(); 

Javaサーブレットコード:

resp.setContentType("text/plain; charset=ISO-8859-1"); 
OutputStream os = resp.getOutputStream(); 
os.write("KLMĚLENÍ".getBytes("UTF-8")); 
os.close(); 
+0

Thx、それはIE上で動作させる必要があるので、私の問題を解決しませんが、私のために解決するwebserviceの変更を要求しました。しかし、あなたのソリューションは他のケースでは良いようです。 – Eric

関連する問題