【发布时间】:2016-01-02 14:38:03
【问题描述】:
我需要一种将字符转换为字符串形式的十六进制值的方法。
我尝试了几种方法,但都忽略了 UTF8 字符。
例如:
取字符:
Ş
如果转换正确,其十六进制值为0x15E,但此代码只返回0x3F,即字符?。
wchar_t mychar = 'Ş';
cout << hex << setw(2) << setfill('0')
<< static_cast<unsigned int>(mychar);
我找到了一个 javascript 函数,正是我需要的,但无法将其转换为 c++ Here
谢谢
【问题讨论】:
-
mychar的类型是什么? -
@πάνταῥεῖ 嗯,让我们说“Ş”
-
Ş什么时候成为类型了?? -
你用的是什么编译器?你有没有告诉它你对源文件使用什么编码?
-
这里有几个问题。 wchar_t 不是 UTF-8 - 也许您的意思是 Unicode 而不是 UTF-8?如果您的意思是 UTF-8,为什么要涉及 wchar_t? wchar_t 通常是 UTF-16 或 UTF-32。 'x' 不是一个广泛的文字 - 缺少前缀 L。源文件编码很重要,所以使用 \u 或 \x 使其无关紧要。
标签: c++ utf-8 utf8-decode