阅读带有CFFile&的CSV非罗马字符

时间:2014-07-08 21:00:25

标签: csv utf-8 coldfusion character-encoding utf-16

更新:原始CSV是在Excel中创建的;当我将数据复制到Google电子表格并从云端硬盘下载CSV时,它可以正常工作。我猜猜有一个编码问题与Excel CSV?有没有办法解决这个问题,或者我们是否需要告诉客户使用Google文档?

我有一个带有非罗马字符的CSV(我的例子是法语,但我们支持完全非罗马语言,如阿拉伯语和泰语)我正在通过ColdFusion的cffile阅读。问题是读取的输出是将所有重音字符转换成奇怪的?符号( )。最初在cffile上没有指定charset,所以我尝试添加utf-8(无变化)和utf-16(一切都转换为中文排序?)。

任何人都知道如何从CSV中获取这些数据而不会丢失/弄乱角色?

CSV示例:

  

Smith,Joan,joan.smith @ test.com,HôpitalJésus

原始cffile:

<cffile action="read" file="#expandedFilePath#" variable="strCSV">

cffile w / charset补充道:

<cffile action="read" file="#expandedFilePath#" variable="strCSV" charset="utf-8">

strCSV的cfdump(没有charset / utf-8 charset):

  

Smith,Joan,joan.smith @ test.com,H pitalJ sus

strCSV的cfdump(utf-16 charset):

  

卭楴栬䩯虑ⱪ潡渮獭楴桀瑥獴⹣潭ⱈ楴慬⁊畳ഊ

1 个答案:

答案 0 :(得分:0)

与大多数Windows程序一样,Excel使用CP-1252编码(不是UTF-8;这很重要:大多数编码猜测器都不能识别ISO-8859-1)。你有没有尝试过:

<cffile action="read" file="#expandedFilePath#" 
      variable="strCSV" 
      charset="windows-1252" />

如果这样可行,您是否可以依赖输入始终是默认的Windows文件?