【问题标题】:write ASCII files with 64 bit DELPHI XE2 ( Unicode) applications for LINUX使用 64 位 DELPHI XE2 ( Unicode) 应用程序为 LINUX 编写 ASCII 文件
【发布时间】:2014-02-02 04:03:10
【问题描述】:

我们运行一个 64 位 Delphi XE2 应用程序并通过以下过程存储结果:

Var MyFilewithresult : TStringList; 

......
...... 
MyFilewithresult.savetoFile('e:\myresults.txt');

在 Windows 端一切正常,现在问题。但是这个文件现在必须在 LINUX 计算机上处​​理; LINUX 上的软件声称我的 windows 文件格式不正确。我需要在 LINUX 上申请以下手动更正程序:

$ iconv -f UTF-16 -t ASCII -o myresults.txt myresultsX2.txt
$ dos2unix myresults.txt

如何修改我的 Delphi 应用程序,如何保存 Stringlist 以从 64 位端直接写入 ASCII 而不是 Unicode .....

我使用 Delphi XE2、Win 7、x64 操作系统,我的应用需要 X 64

【问题讨论】:

    标签: delphi delphi-xe2


    【解决方案1】:

    保存文件时指定编码:

    StringList.SaveToFile(FileName, TEncoding.ASCII);
    

    ASCII 是一种有限的编码。如果您使用 ASCII 范围之外的任何字符,那么在您保存时它们将丢失。如果您的 Linux 程序能够处理它,那么使用 UTF-8 可能会更好,它是 Unicode 的完整编码。

    StringList.SaveToFile(FileName, TEncoding.UTF8);
    

    注意生成的 BOM。您的 Linux 程序可能不喜欢使用 BOM。在这种情况下,您应该在写入文件之前将WriteBOM 设置为 False。

    【讨论】:

    • 您可能还应该设置 StringList.LineBreak := #10; (因为目前看来该文件需要 Dos2Unix'ed)。
    猜你喜欢
    • 2012-10-01
    • 2011-12-25
    • 1970-01-01
    • 2016-11-13
    • 2012-01-05
    • 2011-11-22
    • 2011-09-22
    • 1970-01-01
    • 2018-11-13
    相关资源
    最近更新 更多