如何在C++中使用Unicode(UTF-8)

12

可能是重复问题:
C++中的Unicode

如果我没记错的话,C++中默认的字符和字符串编码是ASCII。有没有一种简单的方法来启用Unicode支持?


@Troubadour:在评论中如何创建链接? - Afriza N. Arief
好的,简单地复制粘贴 URL 将会将其转化为链接(尽管没有给您机会设置漂亮的标题)。至于后者的链接:只需投票关闭重复即可自动创建评论 :) - Matthieu M.
@afriza:与在答案中所做的方式相同。单击答案编辑字段上方的问题图标以获取有关如何创建链接的帮助。在这种情况下,正如@Matthieu M所说,我在顶部的评论实际上是由SO自动生成的。 - Troubadour
4个回答

6

当前的C++标准并没有以任何方式指定编码。你可以考虑使用实际的Unicode库,例如ICU,或者在某些体系结构和实现上,可以使用wchar_t来操作和保存Unicode字符串。

编辑:此答案是针对C++03而言的。如注所述,它已不再适用。


7
可以的!以下是你需要翻译的内容:It does now! ( 1 ) | ( 2 ) | ( 3 ) - Marc.2377

3

这取决于您要处理的文本的用途。UTF-8 的一个重要特点是,如果现有代码处理 8 位字符并且不对 128 以上的字符进行任何特殊处理,则无需更改现有代码。当然,strlen 函数返回的是字节数而不是字符或码点数。因此,您可能有一个可以直接使用 UTF-8 的文本输入输出程序。或者,您正在创建一个 GUI 文本,因此需要处理 Ruby 和 RTL 文本,这种情况下您的工作会更加复杂,您可能需要选择适当的库。


1
根据你使用的C++版本而定。C++0x(尚未完全发布,但仍受到许多编译器支持)为该语言添加了原生的UTF-8支持。否则,C++语言不支持UTF-8。C++03及更早版本通过使用宽字符(wchar_t)来支持Unicode。

4
现在是2017年,C++仍未添加UTF8支持。它以char16_t、u16string、char32_t和u32string的形式添加了UTF16和UTF32支持。UTF8数据仍然被视为char/string处理。 - Panagiotis Kanavos

-4
如果您正在使用Visual Studio,那么进入项目属性并定义一个预处理程序作为_UNICODE就可以为您完成工作。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接