0

Railo <cfloop file="..."> 标记显然旨在支持 charset="..." 属性,因为如果使用了非法属性,它会在错误消息中说明。

如果我使用 cfloop 从没有字符集属性的 UTF-8 编码文件中读取行,那么它可以正常工作,但我不知道为什么。我更愿意明确说明 charset="utf-8" 但我不确定这是否有任何效果。

这样做的原因是,我希望明确声明 charset="windows-1252" 或 charset="iso-8859-1" 会破坏 UTF-8 编码文件的输入,但它会继续正常工作。似乎 charset="..." 不会导致错误,但也没有任何效果。

我想知道没有明确字符集的 UTF-8 的正确解析是否会在明天或在另一台机器上继续工作。

UTF-8 是 cfloop 的默认编码吗?如果不是,是否可以确保使用 UTF-8 编码?

不涉及更改默认 JVM file.encoding 属性的解决方案将是首选。

4

1 回答 1

1

在挖掘了 Railo 的源代码后,我已经解决了这个问题。charset 属性不会(通常)被忽略。我使用的 UTF-8 文件有一个字节顺序标记 (BOM),即使我已明确要求我的编辑器在没有字节顺序标记的情况下保存它。事实证明,如果存在 BOM,忽略 charset 属性,这并非完全不合理的行为。

如果缺少 BOM,则 charset="utf-8" 属性将确保使用正确的默认编码,而不管 System.file.encoding 属性的设置如何。

于 2013-08-06T15:59:03.020 回答