gpt4 book ai didi

c++ - 设计使用 UTF-8 或 UTF-16 的应用程序

转载 作者:太空狗 更新时间:2023-10-29 20:16:38 26 4
gpt4 key购买 nike

我正在开发一个主要供英语和西类牙语读者使用的应用程序。但是,将来我希望能够支持更多扩展语言,例如日语。在考虑程序的设计时,我在 UTF-8 与 UTF-16 与多字节之间遇到了瓶颈。我想编译我的程序以支持 UTF-8 或 UTF-16(当使用中文等语言时)。为此,我在想我应该拥有诸如

#if _UTF8
typedef char char_type;
#elif _UTF16
typedef unsigned short char_type;
#else
#error
#endif

这样,将来当我使用 UTF-16 时,我可以切换 #define(当然,对于诸如 sprintf 之类的东西,也可以使用相同类型的 #if/#endif, ETC。)。我有自己的自定义字符串类型,因此也可以使用这种情况。

使用上述场景将每次使用“char”替换为我的“char_type”是否会被视为“坏主意”?如果是这样,为什么它被认为是一个坏主意,我怎样才能实现我上面提到的目标?

我想使用一个或另一个的原因是内存效率。如果我不使用 UTF-16,我宁愿不一直使用它。

最佳答案

UTF-8 可以表示每一个 Unicode 字符。如果您的应用程序正确支持 UTF-8,那么您就可以使用任何语言。

请注意,如果您正在编写 Windows 应用程序,则 Windows 的 native 控件没有用于在其中设置 UTF-8 文本的 API。但是,很容易制作一个在内部对所有内容都使用 UTF-8 的应用程序,并在 Windows 中设置文本时转换 UTF-8 -> UTF-16,并在从 Windows 获取文本时转换 UTF-16 -> UTF-8。我已经做到了,而且效果非常好,比编写 WCHAR 应用程序好得多。转换 UTF-8 <-> 16 很简单; Windows 有它的 API,或者您可以找到一个简单的(一页)函数在您自己的代码中完成它。

关于c++ - 设计使用 UTF-8 或 UTF-16 的应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8958947/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com