将Windows-1250编码为UTF8的Javascript字符串

时间:2016-08-15 08:32:17

标签: javascript angularjs encoding utf-8 character-encoding

我是一个从外部网络服务接收数据的angularjs应用程序。

我想我接收的是UTF-8字符串,但是用ANSI编码。

例如我得到了

KLMÄšLENÃ    

当我想要显示时

KLMĚLENÍ

我尝试使用decodeURIComponent进行转换,但这并不起作用。

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

我可能遗漏了一些东西,但我无法找到。

谢谢和问候, 埃里克

1 个答案:

答案 0 :(得分: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 servlet代码:

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