javascript - 在字符串中查找十六进制(windows1252)字符串并将其转换 - Javascript

标签 javascript string utf-8 character-encoding windows-1252

我有一个 WebSocket,可以从不同的服务将文本字符串传递到我的页面。其中一些字符串包含奇怪的字符。

有时我会收到如下字符串:

“东西%91引用的东西%92东西”

和类似的。我发现这个特定的服务向我发送了 windows-1252(或 CP1252)字符集的字符串。

使用 javascript,将所有字符串转换为 UTF-8 或仅转换十六进制字符,哪种方法是最好(也是最快)的方法?

最佳答案

看起来你有percent encoded Windows-1252字符。

如果您创建从 Windows-1252 代码到 Unicode 字符的映射,则可以使用 replace 替换它们。

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"

关于javascript - 在字符串中查找十六进制(windows1252)字符串并将其转换 - Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32974057/

相关文章:

javascript - 如何在 Angularjs 中使用 ng-file 上传库上传二进制格式的文件?

PHP、MySQL、字符显示不正确。

javascript - 为什么我的 JavaScript 构造函数模式不起作用?

python - 将字符串转换为python中的列表

python - 用 '#' 改变字符串的一部分

java - 拆分功能问题?

.net - DataContractJsonSerializer.ReadObject 有时会抛出 : The token "was expected but found ' Â'

python - "surrogateescape"无法转义某些字符

javascript - .delay() 仅适用于第一个动画

javascript - 设置范围 slider 的最小处理程序值