Javascript 将 ansi 转换为 utf8

mIR*_*IRU 5 jquery ansi utf-8

我正在尝试使用此插件 jquery.csvToTable 将数据从 csv 显示到网页,cvs 文件已将 ansi 编码为日语文本,但网页已编码为 utf8,并且 js 无法与 ansi 一起使用,如何转换或如果存在另一种方法数据$.get(csvFile, function(data) {数据到utf8,抱歉我的英文不好,非常感谢!

T.J*_*der 3

当您在 JavaScript 中处理字符串时,您正在处理 UTF-16。浏览器需要确保传递到 JavaScript 层的任何数据都已正确转换。

在本例中,因为您使用的是$.get,这意味着 ajax 层必须知道它正在处理什么。您需要确保您的服务器在包含 CSV 文件的 HTTP 响应中返回正确的字符集信息,以便浏览器知道字符数据的格式。完成此操作后,浏览器应该执行任何必要的转换从原始的 JavaScript 到 UTF-16。

具体来说,如果您的 CSV 文件采用字符集Windows-1252(有时人们称之为“ANSI”,尽管它不正确),则这将是Content-Type您的服务器应随文件返回的标头:

Content-Type: text/csv; charset=windows-1252
Run Code Online (Sandbox Code Playgroud)

...但如果您的内容是日语,我不认为它会出现在 Windows-1252 中,这是一个(非常有限的)拉丁字符集。如果您使用的是 Windows,则更可能是代码页 932,即:

Content-Type: text/csv; charset=Windows-31J
Run Code Online (Sandbox Code Playgroud)

...或者如果您使用的是 *nix,也许是EUC-JP

Content-Type: text/csv; charset=EUC-JP
Run Code Online (Sandbox Code Playgroud)

您可以在此 W3C 文档中了解有关字符集的更多信息。( Joel Spolsky 的这篇文章也很有帮助。)有关 JavaScript 字符串的更多信息可以在规范中找到(但基本上,JavaScript 字符串中的每个“字符”都是一个 UTF-16 单词,这意味着需要两个单词的字符才会出现作为字符串中的两个“字符”——对于某些文本来说并不理想,尤其是东亚文本,但当它被定义时,RAM 仍然很珍贵......)。