【发布时间】:2012-11-12 20:31:27
【问题描述】:
我在处理数组中的 3 字节 Unicode UTF-8 字符时遇到了问题。当它们在 char 数组中时,我会收到多字符字符常量和隐式常量转换警告,但是当我使用 wchar_t 数组时,wcout 什么也不返回。由于项目的性质,它必须是数组而不是字符串。下面是我一直在尝试做的一个例子。
#include <iostream>
#include <string>
using namespace std;
int main()
{
wchar_t testing[40];
testing[0] = L'\u0B95';
testing[1] = L'\u0BA3';
testing[2] = L'\u0B82';
testing[3] = L'\0';
wcout << testing[0] << endl;
return 0;
}
有什么建议吗?我正在使用 OSX。
【问题讨论】:
-
当您将它们存储在
char数组中时,这样的代码点将占用三个chars。多字符字符常量是完全不同的东西。 -
wstring 不是 utf8(它们不一定是 UTF-16 或 UCS4)。你不知道它们是什么编码,所以在它们里面写固定值是自找麻烦。
-
它们没有任何编码。它们只是一些字节。