我正在维护一个必须在windows和linux机器之间共享数据的项目。该程序于2003年在DELPHI (Windows)中开发--因此,未来两个系统都必须(至少可能)读取大量遗留数据文件。
我已经将程序移植到Lazarus,它在Linux上运行得相当好。
但是数据(以专有格式)将字符串存储为#0-#255中的普通ascii-字符。在linux机器上读取数据会导致大量的“?”符号,而不是“i,üon .”等。
我想要解决的问题是:
1.)我像往常一样在windows机器上读取数据。2.)我使用修改后的版本保存数据,在保存时使用URLEncode()对所有字符串进行编码。3.)我还修改了用URLDecode 4读取数据的例程。)我用修改后的版本保存了数据。5.)我在linux上编译了修改后的版本,并从windows机器上复制了数据。6.)我打开了相关的数据。有发问的痕迹(?)而不是“.”等。
那么,实际的问题是:如何共享由两个系统维护的数据,并在编辑数据时(两边)保留这些字符?提前感谢
发布于 2014-09-29 00:52:47
charset-specific.在128-255之间的8位Ansi值无论使用什么字符集在Windows上保存数据(假设您依赖Windows默认编码,这取决于用户的区域设置),您必须在Linux上加载数据时使用相同的字符集,反之亦然。世界上使用的字符集有几十个(如果不是几百个),这使得Ansi数据的可移植性变得困难。这正是Unicode设计要解决的问题。最好将数据保存在便携式字符集(如UTF-8 )中,然后在加载/保存数据时执行与系统字符集的转换。
发布于 2014-09-29 09:23:27
发布于 2014-09-30 07:34:49
注意,Lazarus 总是需要用于GUI的utf8字符串。因此,即使在Windows上,如果没有适当的utf8卫生设施,这也是行不通的。
https://stackoverflow.com/questions/26090374
复制相似问题