1. 什么是多字节,宽字符?
起初,C语言在设计的时候,英文用一个字节(8位)就能编码,但是随着字符数量越来越庞大,无法使用一个字节进行编码。
于是出现了两种表示字符集的方法:(1)宽字符(每个字符使用相同的位长,也就是所有的字符占用相同的字节个数)
(2)多字节字符(每个字符可以是一个或者多个字节)
2.常见的字符集一般有 ASCII字符集、GB2312字符集、BIG5字符集、 GB18030字符集、Unicode字符集。
3.宽字符与多字节字符的转换:
C++中常用的两个函数是MultiByteToWideChar()和WideCharToMultiByte()
下面是DUI中的一些代码:
bool StringHelper::MBCSToUnicode(const char *input, std::wstring& output, int code_page)
{
output.clear();
int length = ::MultiByteToWideChar(code_page, 0, input, -1, NULL, 0);
if (length <= 0)
return false;
output.resize(length-1);
if (output.empty())
return true;
::MultiByteToWideChar(code_page,
0,
input,
-1,
&output[0],
static_cast<in