3

我们有一个 ColdFusion 文件库管理系统,它正在从旧的 ColdFusion 4 服务器上移除,并转移到基于 ColdFusion 8 的新系统上。

我们所有的文件和文件夹都是英文、法文和西班牙文的。

在 CF8 中使用 CFDirectory 加载和显示这些文件和文件夹会导致法语和西班牙语文件和文件夹出现两个问题,但这两个问题可能是相关联的。

  1. 没有从 cfdirectory 返回带有重音字符的目录。
  2. 带有重音字符的文件显示颠倒?而不是重音字符。

服务器是带有 SunONE 6.1 Web 服务器的 Solaris 10

更新

我们现在已将问题缩小到 JVM。文件系统看起来不错,但是如果我们包含一个使用基本 Java 文件 IO 的 Java 类,我们会在文件和目录上遇到同样的问题。

任何有关如何在 JVM 中纠正此问题的建议将不胜感激

4

3 回答 3

1

我没有找到任何特定于您的问题的内容,但我确实在版本 6 的发行说明中看到了此说明:

您不能使用cfinclude包含双字节文件名的文件。

没有迹象表明这是否已得到修复。我不确定,但我认为“双字节”文件名是指使用 unicode,我相信你需要使用它来获取文件名中的重音字符......所以它可能在某种程度上与你的问题有关.

如果您不能简单地重命名文件以删除重音字符,我建议您在官方ColdFusion 错误数据库中提交一个错误。

于 2009-11-11T17:37:42.360 回答
0

The problem may be that the chars in the dirs created by CF 4 are not unicode...in fact, if CF4 created them then I can pretty much guarantee that they are not because CF previous to 6 didn't know unicode or utf-8 from a hole in the ground. It often ended up using some wierd encodings. CF6+ on the other hand assumes that just about everything is utf-8.

于 2009-11-11T23:22:35.227 回答
0

我相信这是您的操作系统问题。

我在乌克兰语环境的 Ubuntu 上使用 CF8 开发版,并且可以执行以下操作。

使用双字节字符列出目录:

<cfset path = "/home/trovich/docs/журнали/" />
<cfdirectory action="list" directory="#path#" name="qGetDirectory" />
<cfinclude template="файл_з_іїґ.cfm">

文件файл_з_іїґ.cfm包含以下代码:

<cfoutput>
<cfloop query="qGetDirectory">
#qGetDirectory.name#<br>
</cfloop>
</cfoutput>

结果如下:

Акция
Ї
RING0
root#ua
PHP!nside
Phrack Magazine
phparchitect
Бійцівський Клуб
Bricolage
Друшляк

没有遗漏任何东西,包括完美的作品。

PS 希望您的浏览器能够正确呈现 Unicode 字符。

于 2009-11-11T20:18:23.243 回答