Arg*_*tyr 9 delphi unicode delphi-2009 ansistring
我的Win32 Delphi应用程序分析由不支持Unicode的其他应用程序生成的文本文件.因此,我的应用程序需要读取和写入ansi字符串,但我想通过在GUI中使用Unicode来提供更好的本地化用户体验.该应用程序对来自TList的对象中的字符串进行了一些非常重要的逐字符分析.
在从Delphi 2006到Delphi 2009的过渡到Unicode GUI时,我是否应该计划:
我意识到真正详细的响应需要大量的代码 - 我只是询问那些进行过这种转换并仍然需要使用纯文本文件的人的印象.在ansistrings和Unicode之间放置屏障的位置?
编辑:如果#1,为ansistring输出映射Unicode字符串的任何建议?我猜想输入字符串的转换将使用tstringlist.loadfromfile自动转换(例如).
不存在 AnsiString 输出这样的东西 - 每个文本文件都有一个字符编码。当您的文件包含 ASCII 范围之外的字符时,您必须考虑编码,因为即使在不同的国家/地区加载这些文件也会产生不同的结果 - 除非您碰巧使用 Unicode 编码。
如果加载文本文件,您需要知道它的编码。对于像 xml 或 html 这样的格式,信息是文本的一部分,对于 Unicode 来说,有 BOM ,尽管对于 UTF-8 编码的文件来说,它并不是严格必需的。
将应用程序转换为 Delphi 2009 是一个思考文本文件编码并纠正过去错误的机会。应用程序的数据文件的寿命通常比应用程序本身更长,因此考虑如何使它们面向未来和通用是值得的。我建议使用 UTF-8 作为所有新应用程序的文本文件编码,这样将应用程序移植到不同的平台就很容易。UTF-8 是数据交换的最佳编码,对于 ASCII 或 ISO8859-1 范围内的字符,它甚至还会创建比 UTF-16 或 UTF-32 小得多的文件。
如果您的数据文件仅包含 ASCII 字符,那么您就已经准备好了,因为它们也是有效的 UTF-8 编码文件。如果您的数据文件采用 ISO8859-1 编码(或任何其他固定编码),则在将它们加载到字符串列表并将其保存回来时使用匹配转换。如果您事先不知道它们将采用什么编码,请在加载时询问用户,或提供默认编码的应用程序设置。
内部使用 Unicode 字符串。根据您需要处理的数据量,您可能会使用 UTF-8 编码的字符串。
| 归档时间: |
|
| 查看次数: |
1375 次 |
| 最近记录: |