3

如何在javascript中cp-1251解码UTF-8

来自cp-1251数据源,需要从 js 客户端解码。

无法更改服务器端输出,因为它与第 3 方有关,并且由于某种原因,我不会使用任何服务器端编程将数据馈送转换为另一个数据馈送。

4

1 回答 1

2

(假设您所说的“UTF-8”指的是 JS 字符串的原生编码......)

根据您的“cp-1251”数据的格式以及您需要支持的浏览器,您可以选择:

  • TextDecoder.decode() API(解码来自类型化数组的八位字节序列,例如Uint8Array) - 如果您使用 Web 套接字,则可以从中获取 ArrayBuffer 进行解码。
  • https://github.com/mathiasbynens/windows-1251对它称为“字节字符串”的东西进行操作(JSString由诸如 之类的字符组成\u00XY,其中 0xXY 是编码字节。
  • 自己构建解码表(示例

请注意,在大多数情况下(虽然不像 websocket 那样低级),在它最终成为 JS 字符串之前以正确的编码读取数据可能更容易(例如,您甚至可以强制 XMLHttpRequest 使用某种编码如果服务器误报编码)。

于 2017-01-03T20:26:20.197 回答