我想检测操作系统的语言是否为双字节。
获得我正在使用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。

07-25 23:38
查看更多