JavaScript将ansi转换为utf8

5

我正在尝试使用jquery.csvToTable插件将csv文件中的数据显示在网页上,csv文件采用ANSI编码且包含日文文本,但网页采用UTF-8编码,而JavaScript不支持ANSI编码。有没有可能将数据转换为UTF-8或者存在其他方法?以下是需要翻译的代码:$.get(csvFile, function(data) {非常抱歉我的英语不好,谢谢!


你是如何获取数据的?你能使用服务器端编程吗? - MeLight
1
不,我没有使用服务器端编程,数据是通过$.get从CSV中获取的。 - mIRU
3个回答

3
当你在JavaScript中处理字符串时,实际上是在处理UTF-16编码。浏览器需要确保传递给JavaScript层的任何数据都已正确转换。在这种情况下,因为你使用了$.get,所以ajax层需要知道它正在处理什么。你需要确保服务器在HTTP响应中返回正确的字符集信息,包含CSV文件,这样浏览器就知道字符数据的格式。一旦你这样做了,浏览器就会对JavaScript进行必要的从原始格式到UTF-16的转换。具体来说,如果你的CSV文件是使用Windows-1252字符集(有时人们称之为“ANSI”,尽管这不正确),那么这将是你的服务器应该与文件一起返回的Content-Type头。
Content-Type: text/csv; charset=windows-1252

......但是如果你的内容是日文,我认为它不会使用Windows-1252编码,因为它只支持拉丁字符集(非常有限)。如果你在使用Windows系统,更可能的是使用代码页932,即:

Content-Type: text/csv; charset=Windows-31J

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

Content-Type: text/csv; charset=EUC-JP

你可以通过W3C文档了解有关字符集的更多信息。(Joel Spolsky的这篇文章也非常有帮助。) 在规范中可以找到有关JavaScript字符串的更多信息(但基本上,JavaScript字符串中的每个“字符”都是一个UTF-16单词,这意味着需要两个单词的字符会显示为字符串中的两个“字符”,对于某些文本,特别是东亚文本来说并不理想,但在定义时,内存仍然很宝贵...)。

1

-1

请问,您能提供一些示例数据吗? - shenhengbin
抱歉,是什么类型的数据?日文文本还是结果文本? - mIRU
http://meta.stackexchange.com/questions/8231/are-answers-that-just-contain-links-elsewhere-really-good-answers - T.J. Crowder
日本語: 開催日、テーマ、講師(病院名)、講師(講師名)、詳細データ 出力データ: 不明 - mIRU
这个链接对我也不起作用。 尽管我尝试了“%E2%80%93”(称为“EN DASH” U+2013 - e2 80 93)。 - Yevgeniy Afanasyev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接