angularjs Javascript字符串编码Windows-1250转UTF8

c0vxltue  于 2023-05-21  发布在  Angular
关注(0)|答案(2)|浏览(178)

我有一个angularjs应用程序,可以从外部网络服务接收数据。
我想我收到UTF-8字符串,但编码在ANSI。
例如我得到

KLMÄšLENÃ

当我想展示

KLMĚLENÍ

我尝试使用decodeURIComponent来转换它,但这不起作用。

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

我可能错过了什么,但我找不到什么。
谢谢和问候,埃里克

7hiiyaii

7hiiyaii1#

可以使用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();
ekqde3dh

ekqde3dh2#

只是原始答案的现代化版本:

await fetch(url)
    .then(res => res.arrayBuffer())
    .then(buff => new TextDecoder('windows-1250').decode(buff));

相关问题