Vit*_*gel 2 delphi android character-encoding
我正在做一个关于问卷调查的项目.用户使用Delphi上的问题创建项目,而不是将.txt文件中的项目导出到Android,在那里读取文件并且用户可以回答.我的问题是á,à,É,Ú等字符,看起来像?在Android中,代码为65533.因此,我需要知道如何配置Android和Delphi以在同一个字符集中工作.
Android基于Linux,因此可能使用UTF-8.另一方面,Android也非常类似于Java,因此可能更喜欢UTF-16.
如果您需要将文件设置为UTF-8,则可以这样做,假设您的文本为TStringList.
StringList.SaveToFile(FileName, TEncoding.UTF8);
这将包括文件中的BOM,我认为Android不会喜欢 - Windows UTF-8应用程序倾向于使用BOM,而不是Linux.如果您想在没有BOM的情况下输出,请执行以下操作:
type
  TUTF8EncodingNoBOM = class(TUTF8Encoding)  
  public
    function GetPreamble: TBytes; override;
  end;
function TUTF8EncodingNoBOM.GetPreamble: TBytes;
begin
  Result := nil;
end;
...
var
  UTF8EncodingNoBOM: TEncoding;//make this a global variable
...
UTF8EncodingNoBOM := TUTF8EncodingNoBOM.Create;//create in a unit initialization, remember to free it
...
StringList.SaveToFile(FileName, UTF8EncodingNoBOM);
如果您发现需要UTF-16,则使用TEncoding.UnicodeUTF-16LE或TEncoding.BigEndianUnicodeUTF-16BE.如果您需要剥离BOM,那么使用与上述相同的技术就足够了.
摘要
TEncoding.TStrings.SaveToFile与该TEncoding实例一起使用.| 归档时间: | 
 | 
| 查看次数: | 1413 次 | 
| 最近记录: |