繁体   English   中英

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

[英]Designing an application for UTF-8 or UTF-16 usage

我正在开发一个主要由英语和西班牙语读者使用的应用程序。 但是,将来我希望能够支持更多扩展语言,例如日语。 在考虑该程序的设计时,我已经在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)。 我有自己的自定义字符串类型,所以也可以使用这种情况。

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

我想使用其中一个的原因是由于内存效率。 如果我不使用它,我宁愿不要一直使用UTF-16。

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

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

我相信选择UTF-8就足以满足您的需求。 请记住,上面的char_type小于两个编码中的字符。

您可能希望看一下这个讨论: https//softwareengineering.stackexchange.com/questions/102205/should-utf-16-be-considered-harmful ,了解不同类型的流行编码的好处。

这基本上是Windows对TCHAR (除了Windows API将char解释为“ANSI”代码页而不是UTF-8)。

我认为这是一个坏主意。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM