Каков текущий современный термин для “Многобайтового набора символов”

Я раньше путал долгое время:

Беспорядок на 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 (который использует 1 байт для всех символов ASCII, которые имеют те же кодовые обозначения как в стандартном кодировании ASCII, и до 4 байтов для других символов), теперь устаревший UCS-2 (который использует 2 байта для всех символов, но не включает каждый символ в стандарт Unicode), и UTF-16 (который расширяет UCS-2, с помощью 4 байтов для кодирования символов, отсутствующих в UCS-2).

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

Я пытаюсь проверить это путем выполнения следующего кода под VC2008

#include 

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 Character Set, результат соответствовал моему предположению.

Но что относительно Многобайтового набора символов? Что делает средства Многобайтового набора символов в текущем "современном" мире?:)

5
задан Community 23 May 2017 в 12:33
поделиться

4 ответа

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

MBCS - это термин, используемый для обозначения класса кодировок символов, которые не могут быть представлены одним байтом, отсюда многобайтовый набор символов. Для того чтобы правильно декодировать строку в этом формате, вам нужна кодовая страница, которая сообщает вам, что различные комбинации байтов соответствуют символам. ISO/IEC 8859 определяет набор стандартов MBCS, но, согласно Википедии, ISO прекратила их поддержку в 2004 году, предположительно, чтобы сосредоточиться на Unicode.

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

6
ответ дан 14 December 2019 в 13:33
поделиться

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

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

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

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

0
ответ дан 14 December 2019 в 13:33
поделиться

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

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

0
ответ дан 14 December 2019 в 13:33
поделиться

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

Когда вы слышите этот термин, вы обычно ожидаете, что он относится к одному из старых устаревших наборов символов, например, «IBM EBCDIC cp1390 - Japanese Kanji Multi Byte».

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

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

0
ответ дан 14 December 2019 в 13:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: