vc++2005中“使用Unicode字符集”和“使用多字节字符集”有什么区别?
我在OpenGL中输出文字(英文),在“使用多字节字符集”环境下编译运行没问题,
但在“使用Unicode字符集”环境下编译运行输出的却是乱码,不明白是怎么回事,
请指教!谢谢!
代码如下:
void CTrochoidView::DrawText()
{
glPushMatrix(); glColor3f(1.0f,1.0f,1.0f); wglUseFontBitmaps(wglGetCurrentDC(),0,255,100); glListBase(100);
glRasterPos3f(10.20f+m_Zoom,-0.5f,0.0f);
glCallLists(2,GL_UNSIGNED_BYTE, _T("+x")); glRasterPos3f(-0.5,10.2f+m_Zoom,0.0f);
glCallLists(2,GL_UNSIGNED_BYTE,_T("+y")); glRasterPos3f(-0.5,0.0f,10.2f+m_Zoom);
glCallLists(2,GL_UNSIGNED_BYTE,_T("+z")); glRasterPos3f(0.0,0.0f,0.0f);
glCallLists(6,GL_UNSIGNED_BYTE,_T("Center")); glPopMatrix();
}
我在OpenGL中输出文字(英文),在“使用多字节字符集”环境下编译运行没问题,
但在“使用Unicode字符集”环境下编译运行输出的却是乱码,不明白是怎么回事,
请指教!谢谢!
代码如下:
void CTrochoidView::DrawText()
{
glPushMatrix(); glColor3f(1.0f,1.0f,1.0f); wglUseFontBitmaps(wglGetCurrentDC(),0,255,100); glListBase(100);
glRasterPos3f(10.20f+m_Zoom,-0.5f,0.0f);
glCallLists(2,GL_UNSIGNED_BYTE, _T("+x")); glRasterPos3f(-0.5,10.2f+m_Zoom,0.0f);
glCallLists(2,GL_UNSIGNED_BYTE,_T("+y")); glRasterPos3f(-0.5,0.0f,10.2f+m_Zoom);
glCallLists(2,GL_UNSIGNED_BYTE,_T("+z")); glRasterPos3f(0.0,0.0f,0.0f);
glCallLists(6,GL_UNSIGNED_BYTE,_T("Center")); glPopMatrix();
}
MBCS 字符可以出现在文件名和目录名等字符串中。编辑操作
MBCS 应用程序上的编辑操作应在字符上操作,而非在字节上操作。插入符号不应拆分字符,向右键应向右移动一个字符等。Delete 应删除一个字符;Undo 则应将字符重新插入。字符串处理
在使用 MBCS 的应用程序中,字符串处理引起特殊问题。两种宽度的字符混合在一个字符串中;因此必须记住检查前导字节。运行时库支持
C 运行时库和 MFC 支持单字节、MBCS 和 Unicode 编程。单字节字符串用 str 运行时函数族处理,MBCS 字符串用相应的 _mbs 函数处理,而 Unicode 字符串用相应的 wcs 函数处理。MFC 类成员函数的实现使用可移植运行时函数,这些可移植运行时函数在正常情况下映射到标准 str 函数族、MBCS 函数或 Unicode 函数,如“MBCS/Unicode 可移植性”中所述。MBCS/Unicode 可移植性
使用 Tchar.h 头文件可以用同一个源生成单字节的 MBCS 应用程序和 Unicode 应用程序。Tchar.h 定义以 _tcs 为前缀的宏,这些宏根据相应的情况映射到 str、_mbs 或 wcs 函数。若要生成 MBCS,请定义 _MBCS 符号。若要生成 Unicode,请定义 _UNICODE 符号。默认情况下,为 MFC 应用程序定义的是 _MBCS。有关更多信息,请参见 Tchar.h 中的一般文本映射。 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!注意!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
如果同时定义了 _UNICODE 和 _MBCS,则行为不确定。
Mbctype.h 和 Mbstring.h 头文件定义了 MBCS 特定的函数和宏,在某些情况下可能需要这些函数和宏。例如,_ismbblead 能告诉您某个字符串中的特定字节是否为前导字节。为获得国际可移植性,使用 Unicode 或多字节字符集 (MBCS) 编码程序。 您希望做什么?
在程序中启用 MBCS 在程序中启用 Unicode 和 MBCS 使用 MBCS 创建国际化程序 了解 MBCS 编程的大概情况 了解字节宽度可移植性的一般文本映射 请参见
概念
国际编程
Visual C++ 中的 MBCS 支持
//怎么感觉是Unicode正在取代MBCS...