Каков современный современный термин для "Многобайтового набора символов" - PullRequest
5 голосов
/ 10 марта 2010

Раньше я некоторое время путал:

Путаница в Unicode и многобайтовых статьях

После прочтения комментариев всех участников, плюс:

Глядя на старую статью (2001 год): http://www.hastingsresearch.com/net/04-unicode-limitations.shtml,, в которой говорится о юникоде:

является 16-битным определением символов позволяя теоретическую сумму более 65 000 знаков. Тем не менее полные наборы символов мира добавить до 170000 символов.

и глядя на текущую «современную» статью: http://en.wikipedia.org/wiki/Unicode

Наиболее часто используемые кодировки UTF-8 (который использует 1 байт для всех Символы ASCII, которые имеют одинаковые кодовые значения как в стандарте ASCII кодирование, и до 4 байтов для других персонажи), ныне устаревший UCS-2 (который использует 2 байта для всех символы, но не включает каждый символ в стандарте Unicode), и UTF-16 (который расширяет UCS-2, используя 4 байта для кодирования символов отсутствуют от UCS-2).

Похоже, что в опциях компиляции в VC2008 опции "Unicode" в наборах символов действительно означают "Unicode, закодированный в UCS-2" (или 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
}

Похоже, что во время компиляции с параметрами набора символов Unicode результат соответствовал моему предположению.

А как насчет многобайтового набора символов? Что означает многобайтовый набор символов в современном «современном» мире? :)

Ответы [ 5 ]

6 голосов
/ 10 марта 2010

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

MBCS - это термин, используемый для обозначения класса кодировок символов с символами, которые не могут быть представлены одним байтом, следовательно, многобайтовым набором символов. Чтобы правильно декодировать строку в этом формате, вам нужна кодовая страница, которая сообщает вам, что различные комбинации байтов сопоставляются с символами. ИСО / МЭК 8859 определяет набор стандартов MBCS, но, согласно Википедии, ИСО прекратила поддерживать их в 2004 году, предположительно, чтобы сосредоточиться на Unicode.

Так что я думаю, что современный термин для MBCS "устарел в пользу Unicode".

0 голосов
/ 21 октября 2011

Похоже, что в параметрах компиляции в VC2008 параметры "Unicode" в наборах символов действительно означают "Unicode, закодированный в UCS-2" (или UTF-16? Я не уверен)

Используется кодировка Unicode в Utf-16 LE . В статье Википедии, на которую я ссылаюсь, есть примечание об этом влиянии.

Но как насчет многобайтового набора символов? Что означает многобайтовый набор символов в современном «современном» мире? :)

MBCS в основном используется в документации MSDN для обозначения DBCS . Это объяснено более подробно в этом блоге . Если вы хотите избежать путаницы, вы можете сказать «Кодовая страница MBCS».

0 голосов
/ 10 марта 2010

В MSVC параметры «Юникод» в разделе «Наборы символов» означают, что _T("X") расширяется до L"X". Если установлено значение MBCS, _T("X") расширяется до "X".

Другим следствием является расширение макроса Win32 MessageBox() до MessageBoxW() или MessageBoxA, а также макросов для всех других функций Win32, входящих в пары A / W.

0 голосов
/ 10 марта 2010

Многобайтовый набор символов - это общий термин для любой схемы кодирования, которая может использовать более 1 байта для кодирования символа.

Когда вы слышите термин, вы обычно ожидаете, что он ссылается на один из более старых унаследованных наборов символов, как в "IBM EBCDIC cp1390 - Японский многобайтный кандзи".

Все схемы UNICODE технически являются MBCS, но вы ожидаете, что их будут называть "UNICODE" в совокупности или конкретно utf-8, utf-16 или utf-32.

Единственным «текущим» программным обеспечением, использующим набор символов MBCS, является пакет Microsoft Office. Который использует "Windows MBCS". Это почти идентично utf-16, за исключением некоторых незначительных различий. Из-за досрочного принятия Microsoft проекта стандарта некоторые небольшие кусочки полного стандарта оказались сложными для реализации, поэтому он застрял в термине «Windows MBCS».

0 голосов
/ 10 марта 2010

многобайтовый означает, что один символ хранится в более чем одном байте.

выдержка из википедии на utf8:

UTF-8 кодирует каждый символ (код точка) от 1 до 4 октетов (8-битных байтов), с использованием единого октетного кодирования только для 128 символов US-ASCII.

по сути, utf8 - это многобайтовый набор символов: -).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...