代码页是字符集编码的别名,也称“内码表”,是特定语言的字符集的一张表。
代码页分为两种:一种是ANSI代码页;另一种是OEM代码页。
⑴OEM代码页主要是用于Windows系统中的命令行界面(Console)程序,虚拟Dos。
⑵ANSI代码页主要是用于Windows系统中本地编码不是Unicode的图形用户界面(Gui)程序。
procedure TForm9.BitBtn3Click(Sender: TObject);
var
cpInfoEx:TcpInfoEx;
begin
//GetACP:获取当前系统的ANSI代码页;
//具体可以对照一下:开始è程序è运行,CMDè输入CHCP;
Windows.GetCPInfoEx(Windows.GetACP,0,cpInfoEx);
Memo2.Lines.Add(SysUtils.Format('ANSI Code Page:%s',[cpInfoEx.CodePageName]));
//GetOEMCP:获取当前系统的OEM代码页;
Windows.GetCPInfoEx(Windows.GetOEMCP,0,cpInfoEx);
Memo2.Lines.Add(SysUtils.Format('OEM Code Page:%s',[cpInfoEx.CodePageName]));
//结论:对于中文操作系统来讲,ANSI代码页跟OEM代码页都是936(ANSI/OEM - 简体中文GBK);
end;
//附图:
GetACP (http://www.programfan.com/doc/vbapi/GetACP.htm)
VB声明:Declare Function GetACP Lib "kernel32" Alias "GetACP" () As Long
说明:判断目前正在生效的ANSI代码页返回值Long,目前活动ANSI代码页的标识符。针对一种特定的语言,可能存在多个这样的代码页。
可能的代码页包括下面这些:
874 泰语
932日语
936中文(简体)
949朝鲜语
950中文(台湾和香港繁体)
1200Unicode
1250东欧语言
1251西里尔语
1252美国和西欧语言
1253希腊语
1254土耳其语
1255希伯来语
1256阿拉伯语
1257波罗的语注解
不要混淆ANSI代码页与OEM代码页的概念!ANSI代码页为不同版本的windows定义标准的ANSI 8位字符集。而OEM代码页指定基础DOS代码页,由系统及键盘使用
GetOEMCP(http://www.programfan.com/doc/vbapi/GetOEMCP.htm)
VB声明:Declare Function GetOEMCP Lib "kernel32" Alias "GetOEMCP" () As Long
说明:判断在OEM和ANSI字符集间转换的windows代码页返回值Long,目前处于活动状态的OEM代码页的标识符。针对一种特定的语言,可能存在多个代码页。
以下是可用代码页列表
437默认:美国
708-720阿拉伯代码页
737希腊775波罗的
850国际
852Slavic
855西里尔语
857土耳其语
860葡萄牙语
861冰岛语
862希伯来语
863加拿大法语
864阿拉伯语
865挪威/丹麦语
866俄语
874泰语
932日语
936中文(简体)
949朝鲜语
950中文(台、港繁体)
1361朝鲜语