我想检测操作系统的语言是否为双字节。
获得我正在使用Windows的GetLocaleInfo函数的语言。但是我想检测是否是语言双字节。我可以通过使用语言名称来确定是否为双字节(即如果语言是日语,则为其双字节),但是是否有其他直接获取操作系统双字节语言的方法。
我用来获取语言的代码:
procedure GetLanguage();
var
Buffer : PChar;
Size : integer;
begin
Size := GetLocaleInfo (LOCALE_USER_DEFAULT, LOCALE_SENGLANGUAGE, nil, 0);
GetMem(Buffer, Size);
try
GetLocaleInfo (LOCALE_USER_DEFAULT, LOCALE_SENGLANGUAGE, Buffer, Size);
Writeln(Buffer);
finally
FreeMem(Buffer);
end;
end;
最佳答案
你怎么称呼“双字节”?您是说使用AnsiString时,它可能具有用两个AnsiChar编码的字符吗?
使用以下代码:
FarEast := GetSystemMetrics(SM_DBCSENABLED) <> 0;
已进行编辑,因为在Unicode Delphi中将
SysLocale.FarEast
强制设置为true。