我正在尝试将国际字符从查询导出到csv。输出到浏览器工作正常,使用CFSPREADSHEET写入Excel也是如此。
我有以下设置:
渲染文件如下:
<cfset filepath="c:/test.csv" />
<cfloop query="q">
<cfset string = "" />
<cfset string = listAppend(string, q.fieldname) />
<cffile action="append" file="#filePath#" output="#string#" charset="windows-1252" />
</cfloop>
<cffile action="readbinary" file="#filePath#" variable="bin" charset="windows-1252">
<cffile action="delete" file="#filePath#" />
<cfheader name="Content-Disposition" value="attachment; filename=Output.csv" charset="windows-1252">
<cfcontent type="text/plain" reset="true" variable="#bin#" />
但是,某些字符无法正常转换。例如:
更新 - 添加charset="windows-1252"
确实解决了大多数不良转化,包括上述示例。以下仍然不转换
答案 0 :(得分:0)
据说Excel has issues with UTF8 CSV files.一个建议是附加一个BOM来帮助它,但不同版本的结果是混合的。有关详细信息,请参阅完整主题。
... build file string ....
<cfset FileWrite(filePath, binaryDecode("EFBBBF", "hex"))>
<cfset FileAppend(filePath, string, "utf-8")>
<cfheader name="Content-Disposition" value="attachment; filename=Output.csv" charset="utf-8">
<cfcontent type="text/plain" reset="true" file="#filePath#" deleteFile="false" />