使用 JS 将 Windows-1252 转换为 UTF-8

Kir*_*ash 5 javascript encoding character-encoding

我有一些荷兰语的字符串。我知道如何使用 PHP 对它们进行编码

$str = iconv( "Windows-1252", "UTF-8", $str );
Run Code Online (Sandbox Code Playgroud)

Javascript 中的等价物是什么?

Ry-*_*Ry- 4

Windows-1252 是单字节编码,非常方便:您只需构建一个查找表即可。

\n\n
<?php\n$s = \'\';\n\nfor ($i = 0; $i < 256; $i++) {\n    $converted = iconv(\'Windows-1252\', \'UTF-8\', chr($i));\n\n    if ($converted === false) {\n        $s .= "\\xef\\xbf\\xbd";  # UTF-8 replacement character\n    } else {\n        $s .= $converted;\n    }\n}\n\necho $s;\n
Run Code Online (Sandbox Code Playgroud)\n\n

假设您想要一个常规 JavaScript 字符串作为结果(而不是 UTF-8),并且输入是一个字符串,其中每个字符\xe2\x80\x99s Unicode 代码点实际上代表 Windows-1252 代码点,则结果表可以读作UTF-8,放入 JavaScript 字符串文字,然后 voil\xc3\xa0:

\n\n
var WINDOWS_1252 = \'\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !"#$%&\\\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\xe2\x82\xac\xef\xbf\xbd\xe2\x80\x9a\xc6\x92\xe2\x80\x9e\xe2\x80\xa6\xe2\x80\xa0\xe2\x80\xa1\xcb\x86\xe2\x80\xb0\xc5\xa0\xe2\x80\xb9\xc5\x92\xef\xbf\xbd\xc5\xbd\xef\xbf\xbd\xef\xbf\xbd\xe2\x80\x98\xe2\x80\x99\xe2\x80\x9c\xe2\x80\x9d\xe2\x80\xa2\xe2\x80\x93\xe2\x80\x94\xcb\x9c\xe2\x84\xa2\xc5\xa1\xe2\x80\xba\xc5\x93\xef\xbf\xbd\xc5\xbe\xc5\xb8\xc2\xa0\xc2\xa1\xc2\xa2\xc2\xa3\xc2\xa4\xc2\xa5\xc2\xa6\xc2\xa7\xc2\xa8\xc2\xa9\xc2\xaa\xc2\xab\xc2\xac\xc2\xad\xc2\xae\xc2\xaf\xc2\xb0\xc2\xb1\xc2\xb2\xc2\xb3\xc2\xb4\xc2\xb5\xc2\xb6\xc2\xb7\xc2\xb8\xc2\xb9\xc2\xba\xc2\xbb\xc2\xbc\xc2\xbd\xc2\xbe\xc2\xbf\xc3\x80\xc3\x81\xc3\x82\xc3\x83\xc3\x84\xc3\x85\xc3\x86\xc3\x87\xc3\x88\xc3\x89\xc3\x8a\xc3\x8b\xc3\x8c\xc3\x8d\xc3\x8e\xc3\x8f\xc3\x90\xc3\x91\xc3\x92\xc3\x93\xc3\x94\xc3\x95\xc3\x96\xc3\x97\xc3\x98\xc3\x99\xc3\x9a\xc3\x9b\xc3\x9c\xc3\x9d\xc3\x9e\xc3\x9f\xc3\xa0\xc3\xa1\xc3\xa2\xc3\xa3\xc3\xa4\xc3\xa5\xc3\xa6\xc3\xa7\xc3\xa8\xc3\xa9\xc3\xaa\xc3\xab\xc3\xac\xc3\xad\xc3\xae\xc3\xaf\xc3\xb0\xc3\xb1\xc3\xb2\xc3\xb3\xc3\xb4\xc3\xb5\xc3\xb6\xc3\xb7\xc3\xb8\xc3\xb9\xc3\xba\xc3\xbb\xc3\xbc\xc3\xbd\xc3\xbe\xc3\xbf\';\n\nfunction fromWindows1252(binaryString) {\n    var text = \'\';\n\n    for (var i = 0; i < binaryString.length; i++) {\n        text += WINDOWS_1252.charAt(binaryString.charCodeAt(i));\n    }\n\n    return text;\n}\n
Run Code Online (Sandbox Code Playgroud)\n