2015-02-27 2 views
0

Я читал, что Windows CE использует версию UICF-16 UNICODE (я новичок с кодировками).Windows CE/UTF-16/Chinese

Что происходит, когда строка содержит символ, который требует больше двух байтов, например, китайских символов? Требуется ли 3? Если у меня есть строка, содержащая китайские символы, доступ к N-ой паре байтов не обязательно должен получить N-й видимый символ?

Также как насчет производительности? Если я хорошо понимаю, кодировки, которые имеют переменное количество байтов на видимый символ, требуют, чтобы строка была отсканирована с самого начала, чтобы получить доступ к N-м видимому символу вправо? Если да, это также верно для UTF-16?

спасибо.

+0

См. 1) [Абсолютный минимум Каждый разработчик программного обеспечения Абсолютно, положительно должен знать об Unicode и наборах символов (никаких оправданий!)] (Http://www.joelonsoftware.com/articles/Unicode.html), 2) [ То, что каждый программист абсолютно, положительно должен знать о кодировках и наборах символов для работы с текстом] (http://kunststube.net/encoding/) и 3) [UTF-16] (https://en.wikipedia.org/вики/UTF-16). –

ответ

1

Что происходит, когда строка содержит символ, который требует больше двух байтов, например, китайских символов? Требуется ли 3?

Нет, четыре.

Wikipedia: UTF-16:

В UTF-16, код указывает больше или равно 2 кодируются с использованием двух 16-битных кодовых блоков.


Если я хорошо понимаю, кодировки, которые имеют переменное число байт в видимый символе требуется строка для сканирования с самого начала, чтобы получить доступ к N-й видимого символа правильно?

Да. См. Например, Why use multibyte string functions in PHP?.

+0

Спасибо за помощь. – Virus721

Смежные вопросы