char* 与 TCHAR* 存一样的中文,在内存中的值不同,是什么原因
char* 与 TCHAR* 存同样的中文,在内存中的值不同,是什么原因
在定义了 UNICODE 的情况下
char* szn = "是真难"; 内存值为ca c7 d5 e6 c4 d1 00
TCHAR* tszn = _T("是真难"); 内存值为 2f 661f 77 be 96 00 00
环境为vs2010
我想知道char* 的编码方式是什么, 是如何存储中文字符的
谢谢
------解决思路----------------------
应该说是字符串常量的编码是什么。
这个与操作系统、编译器都有关。
中文 Windows 系统下使用 Visual Studio 提供的编译器的话,普通字符串常量的编码通常是 GBK。宽字符串(L“是真难") 的编码是 utf-16 。
_T("xxx") 在定义了 UNICODE 的情况下会被解释成 L"xxx" (宽字符串)
------解决思路----------------------
在Unicode编码下 TCHAR是wchar_t
在多字节下是char
------解决思路----------------------
TCHAR 是一个不确定类型,取决于你项目设置为何种编码。
TCHAR 可能是 char 或 WCHAR。而 VS 现在的版本工程默认编码都是 Unicode,即 WCHAR。
------解决思路----------------------
GBK
在定义了 UNICODE 的情况下
char* szn = "是真难"; 内存值为ca c7 d5 e6 c4 d1 00
TCHAR* tszn = _T("是真难"); 内存值为 2f 661f 77 be 96 00 00
环境为vs2010
我想知道char* 的编码方式是什么, 是如何存储中文字符的
谢谢
------解决思路----------------------
应该说是字符串常量的编码是什么。
这个与操作系统、编译器都有关。
中文 Windows 系统下使用 Visual Studio 提供的编译器的话,普通字符串常量的编码通常是 GBK。宽字符串(L“是真难") 的编码是 utf-16 。
_T("xxx") 在定义了 UNICODE 的情况下会被解释成 L"xxx" (宽字符串)
------解决思路----------------------
在Unicode编码下 TCHAR是wchar_t
在多字节下是char
------解决思路----------------------
TCHAR 是一个不确定类型,取决于你项目设置为何种编码。
TCHAR 可能是 char 或 WCHAR。而 VS 现在的版本工程默认编码都是 Unicode,即 WCHAR。
------解决思路----------------------
GBK