我对此有类似的问题: ColdFusion, CFDirectory and the French 没有给出满意的答案。
我们已从Coldfusion 9升级到Coldfusion 11.到目前为止,除以下内容外没有任何重大问题:
当使用CFdirectory显示名称中包含非ASCII字符的文件名时(例如:重音符号,变音符号),我们可以看到带有替换字符的文件名 而不是正确的UTF等效字符。例如,名为L'État,c'est moi.pdf的文件显示为L tat,c estmoi.pdf。
我们相信这是一个Coldfusion问题,因为Coldfusion版本没有任何改变。使用Coldfusion 9 CFdirectory在列出相同的重音文件名时工作正常。我们的操作系统是Redhat 7.0,文件名也可以通过ls命令在终端上正确显示。我还创建了一个快速的PHP脚本,以查看PHP是否可以使用“readdir”命令正确读取目录,并且也没有问题,文件名正确呈现。
所以我认为这必须是Coldfusion 11问题。我在Coldfusion管理员服务器界面的JVM设置中添加了-Dfile.encoding = UTF-8 -Dencoding = UTF-8参数,但没有区别。
任何关于如何纠正这一点的建议都将受到赞赏。
使用的代码示例如下:
<cfdirectory
action="list"
directory="#ExpandPath( './' )#/pdfs"
listinfo="name"
name="qFile"
/>
<cfdump
var="#qFile#"
label="All Files"
/>
答案 0 :(得分:0)
您是否尝试过设置 cfprocessingdirective 标记?
<cfprocessingdirective pageencoding="utf-8">
此外,在Chrome网络检查器中,请确保正确返回编码。例如:
Content-Type:text/html; charset=UTF-8
答案 1 :(得分:0)
如果您的环境是Linux,则需要使用干净的UTF-8配置。
请查看here。
我遇到了同样的问题,我只是将~/.bashrc
这些行添加到文件中:
export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8
export LANGUAGE=en_US.UTF-8
之后,不要忘记重新启动Coldfusion Server
sudo /opt/coldfusion11/cfusion/bin/coldfusion restart
答案 2 :(得分:0)
请参阅:Why are certain characters not being injected correctly to SQL Server from a CFQUERY?
确保使用Unicode UTF-8编码保存文件。
还要确保您的JVM参数也会处理它。管理员&gt;服务器设置&gt; Java和JVM。将“-Dfile.encoding = UTF-8”添加到参数中。
答案 3 :(得分:0)
我遇到了同样的问题,从而解决了我的错误
/.bashrc
LC_ALL =“ de_DE.UTF-8”
在linux上,更改后重新启动Coldfusion应用程序