admin 管理员组文章数量: 887021
Windows系统对中文生僻字支持问题的解决办法
1.Windows API对GB18030-2000 的支持下列 Windows API 提供对GB18030-2000 的支持。
IsValidCodePage(), GetCPInfo(), MultiByteToWideChar() and WideCharToMultiByte().
具体说明如下:
1) IsValidCodePage(54936) returns TRUE.
2) GetCPInfo(54936, lpCPInfo) returns TRUE.
3) MultiByteToWideChar(54936, 0, lpMultiByteStr, cbMultiByte, lpWideCharStr, cchWideChar) 完成GB18030-2000 字符串 lpMultiByteStr 到 Unicode 字符串 lpWideCharStr 的转换。
4) WideCharToMultiByte(54936, 0, lpWideCharStr, cchWideChar, lpMultiByteStr, cbMultiByte, lpDefaultChar, lpUsedDefaultChar) 完成Unicode 字符串 lpWideCharStr 到 GB18030-2000 字符串 lpMultiByteStr 的转换。
2. GB18030 函数库
微软4字节字符集编码支持包 (MS4BSP- Microsoft 4-byte Character Set Encoding Support Package) 提供了六个函数,这六个函数支持多字节编码(多达4字节)的字符串。 这些API 是从Windows 95/98/Me 提供的WCHAR (Unicode) 函数集中精选出来的。函数名与相应的ANSI 和WCHAR(Unicode) 函数完全相同,只是后缀的’A’ 或’W’被’L’替代。这些函数的参数与相应的’A’版本函数的参数接口完全相同。该支持包可使基于936代码页的应用程序向GB18030 或其他4字节编码的转换更加快捷。
MS4BSP 在Windows XP 平台的实现是作为一个简单的动态连接库 – ms4bsp.dll。 每一函数都通过调用MultiByteToWideChar() 函数将任何多字节字符串输入参数转换为UTF-16编码格式,然后调用相应的 ‘W’ 版本的函数,返回该函数的输出参数。该动态连接库假设当前系统中存在相关的字体,输入法(IME) 和注册表的设置信息。
该函数集中的缺省4字节字符编码为54936 (GB18030-2000). 将来版本的MS4BL 可能支持其他4字节编码。
接口清单:
BOOL ExtTextOutL(
HDC hdc, // handle to DC
int X, // x-coordinate of reference point
int Y, // y-coordinate of reference point
UINT fuOptions, // text-output options
CONST RECT* lprc, // optional dimensions
LPCSTR lpString, // string
UINT cbCount, // number of characters in string
CONST INT* lpDx // array of spacing values
);
BOOL GetTextExtentExPointL(
HDC hdc, // handle to DC
LPCSTR lpszStr, // character string
int cchString, // number of characters
int nMaxExtent, // maximum width of formatted string
LPINT lpnFit, // maximum number of characters
LPINT alpDx, // array of partial string widths
LPSIZE lpSize // string dimensions
);
BOOL GetTextExtentPoint32L(
HDC hdc, // handle to DC
LPCSTR lpString, // text string
int cbString, // characters in string
LPSIZE lpSize // string size
);
Int MessageBoxL(
HWND hWnd, // handle to owner window
LPCSTR lpText, // text in message box
LPCSTR lpCaption, // message box title
UINT uType // message box style
);
Int MessageBoxExL(
HWND hWnd, // handle to owner window
LPCSTR lpText, // text in message box
LPCSTR lpCaption, // message box title
UINT uType, // message box style
WORD wLanguageId // language identifier
);
BOOL TextOutL(
HDC hdc, // handle to DC
int nXStart, // x-coordinate of starting position
int nYStart, // y-coordinate of starting position
LPCSTR lpString, // character string
int cbString // number of characters
);
版权声明:本文标题:Windows系统对中文生僻字支持问题的解决办法 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1728142766h1204829.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论