使用 lazarus 将 UTF8 转换为 ASCII

问题描述 投票:0回答:2

我正在从文本文件中读取一些字符串,问题是这些字符串是 UTF8 并且包含我希望删除的字符,例如: Ă

对我来说,一个不容易的解决方案是替换每次出现的非法字符,但因为我很懒,我想要一个更简单的解决方案

到目前为止我尝试过这个:

    line := Utf8ToAnsi(line);

line 是我的 UTF8 编码字符串...我尝试将 line 声明为 UTF8String ...

这个问题有可行的解决方案吗?谢谢

freepascal lazarus utf8-decode
2个回答
1
投票

对我来说,一个不容易的解决方案是替换每次出现的 非法字符,但因为我很懒,我想要一个更简单的解决方案

我开发了一个函数,将每个出现的变音字符替换为类似的 ASCII 字符,例如:Á -> A、Ç -> C、ã -> a 等。请查看此链接

HTH


0
投票

在 Windows 上,只需执行以下操作:

type
  TASCIIString = type AnsiString(20127);

function UTF8ToASCII(const S: TASCIIString): string;
begin
  Result := S;
end;

如果原字符串有无法转换的字符,则会转为‘?’。如果要删除它们,请进行循环检查每个字符是否在集合 ['0'..'9', 'A'..'Z'] 中。

© www.soinside.com 2019 - 2024. All rights reserved.