"多字节字符集"的当前现代术语是什么

Che*_*eng 5 c++ unicode internationalization visual-c++

我曾经混淆了一段时间:

对Unicode和多字节文章的困惑

在阅读了所有贡献者的评论后,再加上:

看一篇旧文章(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字符集选项进行编译时,结果与我的假设相符.

但是多字节字符集怎么样?多字节字符集在当前"现代"世界中意味着什么?:)

MSN*_*MSN 6

http://en.wikipedia.org/wiki/Multi-byte_character_set

MBCS是一个术语,用于表示一类字符编码,其中的字符不能用单个字节表示,因此是多字节字符集.为了正确解码这种格式的字符串,您需要一个代码页来告诉您各种字节组合映射到字符.ISO/IEC 8859定义了一套MBCS标准,但根据维基百科,ISO在2004年停止维护它们,可能是专注于Unicode.

所以我认为MBCS的现代术语"不赞成使用Unicode".