Delphi – 将Hi-Ansi字符转换为Ascii等效(é – > e)
发布时间:2020-12-15 10:17:30 所属栏目:大数据 来源:网络整理
导读:Delphi 2007中是否有可用于根据语言环境(代码页)将ANSI表( 127)的高范围内的字符转换为纯ASCII( = 127)中的等效数据的例程? 我知道一些字符不能很好的翻译,但大多数可以,尤其是。在192-255范围内: à→A à→a ?→E ?→e ?→C ?→c – (en dash)→ – (
Delphi 2007中是否有可用于根据语言环境(代码页)将ANSI表(> 127)的高范围内的字符转换为纯ASCII(< = 127)中的等效数据的例程? 我知道一些字符不能很好的翻译,但大多数可以,尤其是。在192-255范围内:
>à→A >à→a ?→E ?→e ?→C >?→c > – (en dash)→ – (连字号 – 可能会更棘手) > – (em dash)→ – (连字符) 解决方法
WideCharToMultiByte对于指定字符集不支持的任何字符(包括剥离变音符)都进行最佳拟合映射。您可以使用该功能完成所需的操作,并将20127(US-ASCII)作为代码页。
function BestFit(const AInput: AnsiString): AnsiString; const CodePage = 20127; //20127 = us-ascii var WS: WideString; begin WS := WideString(AInput); SetLength(Result,WideCharToMultiByte(CodePage,PWideChar(WS),Length(WS),nil,nil)); WideCharToMultiByte(CodePage,PAnsiChar(Result),Length(Result),nil); end; procedure TForm1.Button1Click(Sender: TObject); begin ShowMessage(BestFit('aàà????–— |