Unicode和多字节字符集(mbcs)支持

某些语言,例如,日语和中文),较大字符集。若要支持编程这些市场的,选件Microsoft基础类库(mfc)为处理大字符集的两个不同方法启用:

  • Unicode

  • 多字节字符集(mbcs)

MFC为Unicode字符串支持

整个选件类库对Unicode字符和字符串有条件地启用。具体而言,选件类 CString 支持Unicode。

UAFXCW.LIB

UAFXCW.PDB

UAFXCWD.LIB

UAFXCWD.PDB

MFCxxU.LIB

MFCxxU.PDB

MFCxxU.DLL

MFCxxUD.LIB

MFCxxUD.PDB

MFCxxUD.DLL

MFCSxxU.LIB

MFCSxxU.PDB

MFCSxxUD.LIB

MFCSxxUD.PDB

MFCMxxU.LIB

MFCMxxU.PDB

MFCMxxU.DLL

MFCMxxUD.LIB

MFCMxxUD.PDB

MFCMxxUD.DLL

(xx 表示文件版本号;例如,“80 "意味着8.0版。)

CString 基于 TCHAR 数据类型。如果符号 _UNICODE 为您的程序生成定义,TCHAR 定义为类型 wchar_t,16位字符编码类型。否则,TCHAR 定义为 char,常规8位字符编码。因此,在Unicode下,CString 用16位字符组成。不支持Unicode,它由类型组成 char字符。

若要完成Unicode编程应用程序,则还必须:

  • 使用 _T 宏条件字符串进行编码移植到Unicode。

  • 当您传递字符串,"付款注意到函数参数是否在字节需要在字符的一个长度或一个长度。如果使用Unicode字符串,差别很重要。

  • 使用C运行时字符串处理函数的可移植版本。

  • 对于字符和字符的指针使用以下数据类型:

    • TCHAR 您将使用 char的位置。

    • LPTSTR 您将使用 char*的位置。

    • LPCTSTR 您将使用 const char*的位置。CString 提供运算符 LPCTSTRCStringLPCTSTR之间的转换。

CString 还提供可识别Unicode的构造函数、赋值运算符和比较运算符。

有关编程的Unicode的相关信息,请参见 Unicode主题运行库参考 定义其所有字符串处理函数的可移植版本。请参见类 国际化

MFC为MBCS字符串支持

选件类库也是仅启用多字节字符集,但是,对于双字节字符集(DBCS)。

在多字节字符集,宽字符可以是一个字节。如果它是针对整个系统级两个字节,其第一个字节是特定范围时,代码页正在使用的特殊“尾字节”。主管一起,而“尾字节”指定一个字符编码。

如果符号 _MBCS 为您的程序定义,类型 TCHAR生成,CString,映射到 char。应确定在 CString 的哪些字节是前导字节,以及哪些您是前导字节。帮助您的C运行库提供的函数确定此。

在DBCS下,给定的字符串可以包含任何单字节代ANSI字符、所有双字节字符或二者的组合。这些可能需要在分析字符串的特别小心。这包括 CString 对象。

说明说明

Unicode在MFC的字符串序列化可以读取应用程序的版本正在运行的Unicode和MBCS字符串。您的数据文件可移植在Unicode和程序之间的MBCS版本。

它们调用C运行时函数的CString 成员函数使用特殊的“常规文本”版本,也使用Unicode识别功能。因此,例如,因此,如果 CString 功能通常会调用 strcmp,将调用相应的一般文本功能 _tcscmp。根据符号 _MBCS 和 _UNICODE 如何定义,_tcscmp 映射如下所示:

_MBCS 定义

_mbscmp

_UNICODE 定义

wcscmp

两个符号未定义

strcmp

说明说明

符号 _MBCS 和 _UNICODE 互相排斥。

一般文本的所有功能映射运行时字符串处理的实例。C运行库参考讨论。特别是,请参见 国际化

同样,使用“常规”数据类型映射,CString 方法执行。若要启用MBCS和Unicode,MFC的 char使用 char*的 TCHAR,const char*的 LPTSTRLPCTSTR。这些确保MBCS或Unicode的正确映射。

请参见

参考

字符串操作(crt)

其他资源

字符串(ATL/MFC)