UNICODE与MBCS等字符区别

字符类型有三种编码格式:

1:SBCS (single byte character set)单字节字符集。在这种编码格式下,所有字符都用一个字节表示。ASCII码就是单字节字符。用“0”来表示一个字节的结束。

2 :Unicode 是一种所有的字符都使用两个字节编码的编码模式。Unicode 字符有时也被称作 宽字符。

3:MBCS (multi-byte characters set)多字节字符集。在windows里面 MBCS 包含两种字符类型:单字节字符(single byte characters)和双字节字符(double byte characters)。         由于windows里使用的多字节字符绝大部分是两个字节长,MBCS常被DBCS代替。


Unicode 与 MBCS 的区别,从上说明可以看出:

MBCS 字符可以使用不同长度的字节编码。单字节字符包含拉丁文字母表及ASCII码和DOS操作系统定义的图像字符。双字节字符被用来表示东亚及中东的语言。

Unicode 被用来COM及Windows NT操作系统内部。


char 是单字节字符。双字节字符也可以用char类型来进行操作。Unicode 字符用wchar_t来表示。Unicode 字符和字符串常量用前缀 L 来表示。

例如:wchar_t wch = L"1";wchar_t * wsz = L"Hello";


同一个汉字的Unicode码和GB(K)码是不一样的

_T是windows的宏,适用于UNICODE 和MBCS环境,在定义了Unicode 的情况下就是双字节,未定义就是单字节,

L是C语言的,明确标识是双字节。适用于UNICODE环境



字符类型           含义

WCHAR            Unicode character(wchar_t)

TCHAR             MBCS or Unicode character

LPSTR             string of char (char*)

LPCSTR           const string of char(const char*)

LPWSTR          string of  WCHAR(WCHAR*) 

LPCWSTR        constant string of WCHAR(const WCHAR*)

LPTSTR           string of TCHAR(TCHAR*)

LPCTSTR         constant string of TCHAR(const TCHAR*)

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用多字节字符集 (MBCS) 或者 Unicode 字符集来进行转换,你可以使用一些 C++ 标准库提供的函数来实现。 如果你想将一个窄字符字符串 (char *) 转换为宽字符字符串 (LPCWSTR),你可以使用 MultiByteToWideChar 函数。以下是一个示例代码: ```cpp #include <windows.h> #include <iostream> int main() { const char* narrowStr = "Hello, World!"; // 窄字符字符串 int wideStrLength = MultiByteToWideChar(CP_UTF8, 0, narrowStr, -1, NULL, 0); // 获取宽字符字符串的长度 wchar_t* wideStr = new wchar_t[wideStrLength]; // 分配内存来存储宽字符字符串 MultiByteToWideChar(CP_UTF8, 0, narrowStr, -1, wideStr, wideStrLength); // 执行转换 // 打印宽字符字符串 std::wcout << wideStr << std::endl; delete[] wideStr; // 释放内存 return 0; } ``` 如果你想将一个宽字符字符串 (LPCWSTR) 转换为窄字符字符串 (char *),你可以使用 WideCharToMultiByte 函数。以下是一个示例代码: ```cpp #include <windows.h> #include <iostream> int main() { LPCWSTR wideStr = L"Hello, World!"; // 宽字符字符串 int narrowStrLength = WideCharToMultiByte(CP_UTF8, 0, wideStr, -1, NULL, 0, NULL, NULL); // 获取窄字符字符串的长度 char* narrowStr = new char[narrowStrLength]; // 分配内存来存储窄字符字符串 WideCharToMultiByte(CP_UTF8, 0, wideStr, -1, narrowStr, narrowStrLength, NULL, NULL); // 执行转换 // 打印窄字符字符串 std::cout << narrowStr << std::endl; delete[] narrowStr; // 释放内存 return 0; } ``` 这些示例代码演示了如何使用 Windows API 函数来进行字符串的转换。请确保在使用这些函数之前,包含了 `<windows.h>` 头文件。 希望这能帮助你进行字符集转换!如果你有任何进一步的问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值