Che*_*eng 5 c++ unicode internationalization visual-c++
我曾经混淆了一段时间:
在阅读了所有贡献者的评论后,再加上:
看一篇旧文章(2001年):http://www.hastingsresearch.com/net/04-unicode-limitations.shtml,讨论unicode:
是一个16位字符定义,允许理论总数超过65,000个字符.但是,世界上完整的字符集总计超过170,000个字符.
并查看当前的"现代"文章:http://en.wikipedia.org/wiki/Unicode
最常用的编码是UTF-8(对于所有ASCII字符使用1个字节,与标准ASCII编码使用相同的代码值,对于其他字符使用最多4个字节),现在已过时的UCS-2(它使用2个字节表示所有字符,但不包括Unicode标准中的每个字符),以及UTF-16(扩展UCS-2,使用4个字节编码UCS-2中缺少的字符).
似乎在VC2008的编译选项中,字符集下的"Unicode"选项实际上意味着"在UCS-2中编码的Unicode"(或UTF-16?我不确定)
我尝试通过在VC2008下运行以下代码来验证这一点
#include <iostream>
int main()
{
// Use unicode encoded in UCS-2?
std::cout << sizeof(L"???") << std::endl;
// Use unicode encoded in UCS-2?
std::cout << sizeof(L"abc") << std::endl;
getchar();
// Compiled using options Character Set : Use Unicode Character Set.
// print out 8, 8
// Compiled using options Character Set : Multi-byte Character Set.
// print out 8, 8
}
Run Code Online (Sandbox Code Playgroud)
似乎在使用Unicode字符集选项进行编译时,结果与我的假设相符.
但是多字节字符集怎么样?多字节字符集在当前"现代"世界中意味着什么?:)
http://en.wikipedia.org/wiki/Multi-byte_character_set
MBCS是一个术语,用于表示一类字符编码,其中的字符不能用单个字节表示,因此是多字节字符集.为了正确解码这种格式的字符串,您需要一个代码页来告诉您各种字节组合映射到字符.ISO/IEC 8859定义了一套MBCS标准,但根据维基百科,ISO在2004年停止维护它们,可能是专注于Unicode.
所以我认为MBCS的现代术语"不赞成使用Unicode".
| 归档时间: |
|
| 查看次数: |
1781 次 |
| 最近记录: |