0

Railo の <cfloop file="..."> タグは、明らかに charset="..." 属性をサポートすることを意図しています。これは、不正な属性が使用された場合にエラー メッセージに同じように表示されるためです。

charset 属性のない UTF-8 でエンコードされたファイルから cfloop を使用して行を読み取ると、正しく動作しますが、その理由はわかりません。明示的に 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) なしで保存するように明示的に要求していました。BOM がある場合、charset 属性無視されますが、これは完全に不合理な動作ではありません。

BOM がない場合、charset="utf-8" 属性により、System.file.encoding プロパティの設定に関係なく、正しいデフォルトのエンコーディングが使用されるようになります。

于 2013-08-06T15:59:03.020 に答える