WChars、编码、标准和便携性
可移植性和序列化是正交概念。
unsigned int
, wchar_t
uint32_t
wchar_t
, setlocale()
, mbsrtowcs()
/wcsrtombs()
: C标准对“编码”只字不提。main(int, char**)
wchar_t
iconv()
wchar_t
wcsrtombs()
iconv()
my program
<-- wcstombs --- /==============\ --- iconv(UTF8, WCHAR_T) -->
CRT | wchar_t[] | <Disk>
--- mbstowcs --> \==============/ <-- iconv(WCHAR_T, UTF8) ---
|
+-- iconv(WCHAR_T, UCS-4) --+
|
... <--- (adv. Unicode malarkey) ----- libicu ---+
实际上,这意味着我会为我的程序入口点编写两个锅炉板包装器,例如C+:
// Portable wmain()-wrapper
#include <clocale>
#include <cwchar>
#include <string>
#include <vector>
这是使用纯标准C/C+编写一个惯用的、可移植的、通用的、与编码无关的程序核心的正确方法吗?(请注意,Unicode规范化或diacritic替换等问题超出了范围;只有在您决定实际需要之后才能解决。Unicode(与你可能想要的任何其他编码系统不同),现在是处理这些细节的时候了吗,例如使用像libicu这样的专用库。)
森林海
拉风的咖菲猫
相关分类