Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从JS读取的CSV文件上的方形问号符号_Javascript_Jquery_Unicode_Utf 8_Non Ascii Characters - Fatal编程技术网

Javascript 从JS读取的CSV文件上的方形问号符号

Javascript 从JS读取的CSV文件上的方形问号符号,javascript,jquery,unicode,utf-8,non-ascii-characters,Javascript,Jquery,Unicode,Utf 8,Non Ascii Characters,我正在我的JS中读取一个CSV文件,但是带有重音(á,ó…)的字符被替换为黑色方形问号(�) 我在PHP中经常遇到这样的问题,但是,我使用的是JS,我不知道如何解决这个问题 问题在于文件和HTML的UTF8编码,有没有办法在代码中解决这个问题 感谢此字符是U+FFFD,替换字符,通常用于替换被认为是某种Unicode编码的流中的无效数据 例如,如果您将文本“Résumé”编码为IS0 8859-1,并希望将其转换为UTF-16,但告诉转换例程该文本为UTF-8,则库可能会生成UTF-16文本“R

我正在我的JS中读取一个CSV文件,但是带有重音(
á
ó
…)的字符被替换为黑色方形问号(

我在PHP中经常遇到这样的问题,但是,我使用的是JS,我不知道如何解决这个问题

问题在于文件和HTML的UTF8编码,有没有办法在代码中解决这个问题


感谢

此字符是U+FFFD,替换字符,通常用于替换被认为是某种Unicode编码的流中的无效数据

例如,如果您将文本“Résumé”编码为IS0 8859-1,并希望将其转换为UTF-16,但告诉转换例程该文本为UTF-8,则库可能会生成UTF-16文本“R”�总和�" (另一种选择是抛出错误,不给出任何结果)

另一种可能出现这种情况的方式是,如果网页声明它是UTF-8,但实际上不是UTF-8。浏览器可能会执行上述重新编码,替换字符将显示在呈现的网页中,但使用忽略或忽略HTML编码信息的编辑器查看源代码时,将显示字符c正确地说

从您的评论来看,您的流程类似于:

Excel->导出到csv->在js中处理csv->生成html

Windows软件通常使用平台的“非Unicode程序编码”来编码八位文本,而不是UTF-8。因此,CSV文件可能是Windows CP1252(如果您使用的是针对大多数西方国家设置的Windows版本),如果您的javascript程序正在读取该数据并将其直接复制到假定为UTF-8的HTML源中,则会导致符合您描述的问题

您需要做的是将CSV使用的任何编码转换为UTF-8。Javascript实际上没有实现这一点的功能,因此您最好的选择可能是在从Excel导出文件后,但在JS中访问文件之前转换文件


其他替代方法是将HTML页面使用的编码更改为csv使用的任何编码,或者不指定编码并让浏览器自行猜测。

black square=您使用的字体中的未知字符。但这种情况只会发生,因为我从文件中获取字符串并插入HTML…如何修复?有吗在js中进行utf8编码/解码?首先确保您在任何地方都真正使用UTF-8。将所有文件保存为UTF-8,将所有文件作为UTF-8提供,等等。但我需要从保存的Excel版本中读取它…保存时,它的默认值不是utf8,我认为替换字符是FFFD(不是FFFE)。