Javascript 从JS读取的CSV文件上的方形问号符号
我正在我的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
á
,ó
…)的字符被替换为黑色方形问号(�代码>)
我在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)。