用wchar_t处理 unicode 字符好吗?它不会引起任何问题吗?
Is handling unicode character with wchar_t good? Does it not cause any problems?
我一直在寻找一种处理波兰语单词的方法。我读过 utf8、16、32,但任何从char
到utf
的转换都会给我不同的字母。
不过,wchar_t给出了正确的字母。
这样做可以吗?
例如,如果我只使用 ascii,仅仅是因为,性能如何?它是否会以任何方式影响应用程序?
你混淆了两件不同的事情:
-
存储
如何存储构成文本字符串的字节。这会在
char
(单字节(值数组中吗?还是会以wchar_t
(多字节(值的形式出现? -
编码
您的计算机(和您!(需要知道如何处理这些字节中的值。它们是什么意思?无论存储如何,它们都可以是ASCII,某些代码页,UTF-8,UTF-16,UTF-32,克林贡语,等等。
通常,出于历史原因,我们为单字节编码(例如ASCII(和UTF-8选择char
,为UTF-16选择wchar_t
(特别是在Windows上,它具有16位wchar_t
,并且通常在整个API中假设这种组合 - 请注意,它错误地将其简单地称为"Unicode"(。
性能并没有真正发挥作用,尽管如果您选择一种并坚持使用它(并使用适合您正在使用的字符串库的存储机制(,您将节省时间和精力在不同编码之间进行转换。有时您的操作系统会帮助确定该选择,但我们无法告诉您它将是什么。
同样,你关于什么"有效"和"不起作用"的陈述非常模糊,很可能是错误的。
在不知道项目要求、运行在哪种计算机上以及使用什么技术的情况下,我们不能说什么是"好的"。不过,我要做一个很大的概括:在过去,你可能使用 Mazovia 编码,这是一种包含波兰字符的更改代码页;如今,您可能希望使可移植性和互换性尽可能简单(因为为什么不呢?!(,因此鼓励您在Windows上坚持使用UTF-16而不是wchar_t
,在其他方面坚持使用UTF-8而不是char
。
(从C++20开始,我们还将有char8_t
,一种专门设计用于表示它存储UTF-8编码数据的存储机制;但是,您还需要一段时间才能看到它被广泛使用,如果有的话。您可以在 cppreference 上阅读有关C++字符类型的更多信息.com关于"基本类型"的文章(
- 打印时有二叉树问题.用户输入不打印任何内容
- 为什么瓦尔格林德在不释放恶意内存后没有报告任何问题?
- 这是使用回溯的 nqueen 问题,但我使用了动态 2d 数组,我的程序编译良好,但不返回任何输出
- 是给定代码中的任何更改,以便我可以为问题提供正确的输出
- 我最近更改了编译器路径以运行 c++ 代码,但现在我无法运行任何 python 代码。我该如何解决这个问题?
- 用wchar_t处理 unicode 字符好吗?它不会引起任何问题吗?
- 如何解决数独问题,以便通过交换任何两个相邻的子网格,我仍然得到有效的答案?
- 循环时嵌套有任何问题
- 将GCC版本升级到发行版附带的版本以外的版本是否有任何问题
- 任何熟悉Codecademy C++/程序的人都可以帮助解决菜鸟问题吗?
- C3881在Visual Studio中,而它在g++中编译没有任何问题
- 在使用__file__,__line__时,是否存在任何兼容性问题
- 试图在具有std ::任何构造函数的基类中调用复制构造函数的问题
- 有关继承层次结构的问题,没有任何虚拟功能
- 任何性能问题都在qt框架中使用了stackedwidget的最大页面数
- 谁能帮助我解决以下 c++ 代码中的问题?该程序不提供任何输出
- 不知道为什么"std::min"功能CPP有任何问题
- 我的代码中的数组有问题.任何建议
- 查找第一个文件问题无法使任何示例正常工作。
- 问题:如何在任何Windows机器上使用路径创建文件