delphi下同时显示不同国家文字的问题
比如我有几个文本文件:chi.txt jap.txt rus.txt ,分别有中文\日文和俄文的说明,而我用的是简体中文的XP系统
想在窗体上放三个memo,同时显示这三种不同的文字,但是只有中文是正常,其他都是乱码,指定18030的字库也无法正常显示,请问这种情况如何解决?
delphi 2010
[解决办法]
为了正确显示aisi文本,需要识别Codepage:例如:
CP1255 1800 SAP Hebrew - ISO8859-8 - Not a complete match
CP932 8000 SAP Shift-JIS
CP950 8300 SAP Tranditional Chinese
CP936 8400 SAP Simplified Chinese
CP949 8500 SAP Korean
CP874 8600 SAP Thai
经过下面的函数转换就能正常显示了,但是更特殊的字符,例如tm标记,需要Unicode采能支持显示
function StringToWideString(const s: AnsiString; codePage: word): WideString;
var
l: integer;
begin
if s = '' then
Result := ''
else begin
l := MultiByteToWideChar(codePage, MB_PRECOMPOSED, PChar(@s[1]), -1, nil, 0);
SetLength(Result, l-1);
if l > 1 then
MultiByteToWideChar(CodePage, MB_PRECOMPOSED, PChar(@s[1]), -1, PWideChar(@Result[1]), l-1);
end;
end;