Поделиться через


Наборы символов двойного байта

Двухбайтовый набор символов (DBCS), также известный как расширенный 8-разрядный набор символов, представляет собой расширенный однобайтовый набор символов (SBCS), реализованный как кодовая страница. DBCS были первоначально разработаны для расширения дизайна SBCS для обработки таких языков, как японский и китайский. Некоторые символы в DBCS, включая цифры и буквы, используемые для написания английского языка, имеют однобайтовые значения кода. Другие символы, такие как китайские иеографы или японские кандзи, имеют значения двойного байтового кода. DBCS может соответствовать кодовой странице Windows или кодовой странице OEM. Кодовая страница DBCS также может включать нетивную кодовую страницу, например кодовую страницу EBCDIC. Определения этих кодовых страниц см. в кодовых страниц.

Заметка

Новые приложения Windows должны использовать Юникод, чтобы избежать несоответствий различных кодовых страниц и для простоты локализации. Однако для некоторых устаревших протоколов может потребоваться использование кодовых страниц DBCS. Каждая кодовая страница DBCS поддерживает разные символы, но страница не поддерживает полный спектр символов, предоставляемых Юникодом. Каждая кодовая страница DBCS поддерживает разные подмножества, по-разному закодированное. Данные, преобразованные из одной кодовой страницы DBCS в другую, подвержены повреждению, так как одно и то же значение данных на разных кодовой странице может кодировать другой символ. Данные, преобразованные из Юникода в DBCS, подвергаются потере данных, так как определенная кодовая страница может не представлять каждый символ, используемый в данных Юникода.

 

Чтобы интерпретировать строку DBCS, приложение должно начинаться в начале строки и сканировать вперед. Он отслеживает, когда он встречает байт свинца в строке, и обрабатывает следующий байт как конечную часть того же символа. Если приложение просто сканирует строку один байт за раз и обнаруживает байт, который, как представляется, является значением кода, представляющим обратную косую черту ("\"), то байт может просто быть байтом байта двухбайтового символа. Приложение не может просто создать резервную копию одного байта, чтобы узнать, является ли предыдущий байт байтом свинца, так как это значение байтов может использоваться как в качестве байта свинца, так и байта тропы. Таким образом, приложение имеет по существу ту же проблему, что и с возможной обратной косой чертой. Другими словами, поиск подстроки гораздо сложнее с DBCS, чем с SBCSs или Юникодом. Соответственно, приложения, поддерживающие DBCS, должны использовать специальные функции, такие как _mbsstr, вместо функции strStr StrStr.

Приложения используют кодовые страницы DBCS Windows с версиями функций Windows "A". См. соглашения для прототипов функций и кодовых страниц. Чтобы определить кодовую страницу DBCS, приложение может использовать функцию GetCPInfo или GetCPInfoEx. Приложение может использовать функцию IsDBCSLeadByte, чтобы определить, можно ли использовать заданное значение в качестве байта байта 2-байтового символа. Кроме того, приложение может использовать функции MultiByteToWideChar и WideCharToMultiByte для сопоставления строк Юникода и DBCS.

наборы символов

однобайтовые наборы символов