严格的Unicode编程需要哪些先决条件?
这是否意味着我的代码不应该char在任何地方使用类型,并且需要使用可以处理的函数wint_t和wchar_t?
在这种情况下,多字节字符序列的作用是什么?
我想知道Stack Overflow社区在使用unicode或多字节字符集创建项目(主要考虑c ++)时的想法.
从一开始就直接使用Unicode是否有优势,这意味着您的所有字符串都将采用宽格式?由于标准使用较大的字符,是否存在性能问题/更大的内存要求?
这种方法有优势吗?某些处理器架构能否更好地处理宽字符?
如果您不打算支持其他语言,是否有任何理由使您的项目成为Unicode?
创建具有多字节字符集的项目有什么理由?
上述所有因素如何在高性能环境(例如现代视频游戏)中发生冲突?
为什么wchar_t需要?它如何优于short(__int16或等等)?
(如果重要:我住在Windows世界.我不知道Linux支持Unicode的做法.)
UTF-8可以编码为1,2和最多4个字节.char我系统上的单个字节是1个字节.我应该使用wchar_t作为预防措施,以便我能够适应任何任意UTF-8编码字符吗?
我一直在查看 的手册页pcre2,并试图准确地弄清楚什么情况需要 的哪些定义PCRE2_CODE_UNIT_WIDTH。
PCRE2 的源代码可以编译为支持 8 位、16 位或 32 位代码单元,这意味着最多可以安装三个单独的库。
问题1:PCRE2的代码单元到底是什么?这是否意味着我需要使用PCRE2_CODE_UNIT_WIDTH 8to 处理char*与PCRE2_CODE_UNIT_WIDTH 32for wchar *?如果我的平台wchar是 16 位怎么办?这需要有条件地使用吗PCRE2_CODE_UNIT_WIDTH 16?如果这是真的,似乎根据How big is wchar_t with GCC? 我需要使用PCRE2_CODE_UNIT_WIDTH = 8 * __SIZEOF_WCHAR_T__
关于 Unicode 的主题:
在所有三种情况下,字符串都可以解释为每个代码单元一个字符,也可以解释为 UTF 编码的 Unicode,并支持 Unicode 常规类别属性。Unicode 支持在构建时是可选的(但是默认设置)。但是,必须在运行时显式启用将字符串处理为 UTF 代码单元。
问题 2:启用 Unicode 时 PCRE2_CODE_UNIT_WIDTH 到底意味着什么?是否PCRE2_CODE_UNIT_WIDTH 8采用 UTF-8,并且我需要设置PCRE2_CODE_UNIT_WIDTH 16为处理 UTF-16 字符串?
当我#include <windows.h>在C或C++中时,我被迫决定字符的格式,其中TCHAR等于char或wchar_t.
我环顾四周相当多的并尽可能的职位如这一个或类似网站这点破wchar_t事儿来了约一个很久以前UTF8之前,对各种原因,并不是一个特别好的解决方案的Unicode现代编程.然而,这些并没有说明已经运行的现有系统的支持wchar_t.
所以我的问题是,我应该使用哪一个?如果我使用普通的char遗嘱将来会被MS抛弃,因为在一天结束时,wchar_tAPI 的版本是最近的?或者,如果我使用wchar_t,将我的代码运行在其他现代平台上是否会很痛苦,这些平台后来使用charUTF8中的普通版本开发?
使用 WinAPI 时,经常使用的类型是 wchar_t,但是我偶然发现许多消息来源说 wchar_t 不应该在其他平台上使用,因为它没有标准化(某些平台上的 UTF-16,UTF-32)对他人等)。如果 wchar_t 没有标准化,是否有一种类型(最好是 UTF-16)可以在 Windows、MacOS 和 Linux 上可靠地使用,并且与 WinAPI 兼容,或者有任何其他方式来确保可移植性?