使用wchar_t处理Unicode字符好吗?它不会引起任何问题吗?

问题描述 投票:0回答:1

我一直在寻找一种处理波兰语单词的方法。我读到有关utf8、16、32的信息,但是从charutf的任何转换都会给我不同的字母。

不过wchar_t给出了正确的字母。

可以这样做吗?

例如,如果我仅使用ascii,那么性能如何?它会以某种方式影响应用程序吗?

c++ unicode utf
1个回答
0
投票

您正在混淆两件事:

  1. 贮藏

    如何存储组成文本字符串的字节。那会在char(单字节)值的数组中吗?还是采用wchar_t(多字节)值的形式?

  2. 编码

    您的计算机(和您!)需要知道如何处理这些字节中的值。他们的意思是什么?不论存储方式如何,它们都可以是ASCII,某些code page,UTF-8,UTF-16,UTF-32,Klingon等等。

通常,由于历史原因,我们选择char表示单字节编码(例如ASCII)和UTF-8,选择wchar_t表示UTF-16(尤其是在Windows中,具有16位[ C0] s,通常在整个API中都采用这种组合-请注意,它不准确地将其简单地称为“ Unicode”。)

性能并没有真正发挥作用,但是如果您选择one并坚持使用(并使用适合您所使用的字符串库的存储机制,则可以节省时间和能量在不同编码之间的转换) )。有时您的操作系统会帮助确定该选择,但我们无法告诉您它将是什么。

类似地,您关于“有效”和“无效”的陈述非常含糊,甚至可能是错误的。

我们不能不知道您的项目需求,将运行何种计算机以及采用何种技术就无法确定。不过,我将做出一个巨大的概括:在过去,您可能会使用wchar_t,这是一个经过修改的代码页,其中包含波兰语字符;如今,您可能想使可移植性和互换性尽可能地容易(因为为什么不这样做!!),因此,建议您在Windows上使用UTF-16(在Mazovia encoding上,而UTF-8在wchar_t上)。 。

(从C ++ 20开始,我们还将拥有char,这是一种专门设计用来表示它存储UTF-8编码数据的存储机制;但是,要花很多时间才能看到它如果有的话,请使用。您可以在char8_t)>上详细了解C ++的字符类型。

© www.soinside.com 2019 - 2024. All rights reserved.