【发布时间】:2009-09-25 15:16:19
【问题描述】:
我正在使用 Unicode SynEdit,它(理论上)具有基本的文件/流编码检测功能。在我尝试打开由我的 PHP 脚本生成的文件之前,它运行良好。我正在谈论的文件被 UniSynEdit 检测为没有 BOM 的 utf8。不幸的是,它没有打开——加载的字符串是空的。我调试了一下,似乎问题出在函数 Utf8Decode 上,由于某种原因它失败并返回空字符串。我还用十六进制编辑器检查了文件,这是真的:它没有 BOM,所有普通字符都使用一个字节编码,而我在文件中的一些波兰字母(如“ł”)是双字节的。 ..
可能出了什么问题,我该如何防止这种情况发生?我相信加载错误的编码总比没有文件好......
【问题讨论】:
-
你用的是什么版本的Delphi?
-
我忘了写... Delphi 7.
-
有 BOM 时会发生什么?
-
如果 UTF8Decode() 返回一个空字符串,那么输入的开头不是有效的 UTF-8。