Delphi - 获取Windows的默认非unicode字符集

jed*_*der 3 delphi character-encoding non-unicode

我有一个Delphi 7应用程序.我需要能够获得非unicode程序的默认Windows字符集.我知道DEFAULT_CHARSET设置了它,但我需要确切地知道它是哪个charset,以便我可以将它与其他字符集进行比较.这可能吗?怎么样?

谢谢!

bum*_*mmi 5

GetFontData正在调用GetObject并使用它LogFont.lfCharSet来确定字符集

使用HFONT调用GetObject将填充LogFont 定义

DEFAULT_CHARSET设置为基于当前系统区域设置的值.例如,当系统区域设置为英语(美国)时,它将设置为ANSI_CHARSET.

使用CP_ACP提供CPINFOEX结构的GetCPInfoEx将提供系统默认的 Windows ANSI代码页.

var
 CPInfoEx:TCPInfoEx;
 CD:Cardinal;
 CharsetInfo:TCharSetInfo;
 CSN:String;
begin
 If GetCPInfoEx(CP_ACP,0,CPInfoEx) then
  begin
    CD := CPInfoEx.Codepage;
    if TranslateCharsetInfo(CD,CharsetInfo,TCI_SRCCODEPAGE) then
      begin
      CharsetToIdent(CharsetInfo.ciCharset,CSN);
      Showmessage(CPInfoEx.CodePageName+' - '+IntToStr(CharsetInfo.ciCharset)+' - '+CSN);
     end;
  end;
end;
Run Code Online (Sandbox Code Playgroud)

  • @jedi添加缺少的声明非常简单. (2认同)