Иллюстрированный самоучитель по Java



              

Как создать строку - часть 2


В самом простом случае компилятор для получения двухбайтовых символов Unicode добавит к каждому байту старший нулевой байт. Получится диапазон

' \u0000 ' — ' \u00ff '

кодировки Unicode, соответствующий кодам Latin 1. Тексты на кириллице будут выведены неправильно.

Если же на компьютере сделаны местные установки, как говорят на жаргоне "установлена локаль" (locale) (в MS Windows это выполняется утилитой Regional Options в окне

Control Panel

), то компилятор, прочитав эти установки, создаст символы Unicode, соответствующие местной кодовой странице. В русифицированном варианте MS Windows это обычно кодовая страница СР1251.

Если исходный массив с кириллическим ASCII-текстом был в кодировке СР1251, то строка Java будет создана правильно. Кириллица попадет в свой диапазон

'\u0400'—'\u04FF'

кодировки Unicode.

Но у кириллицы есть еще, по меньшей мере, четыре кодировки. 

В MS-DOS применяется кодировка СР866. 

В UNIX обычно применяется кодировка KOI8-R. 

На компьютерах Apple Macintosh используется кодировка MacCyrillic. 

Есть еще и международная кодировка кириллицы ISO8859-5;

Например, байт

11100011

(

0xЕ3

в шестнадцатеричной форме) в кодировке СР1251 представляет кириллическую букву

Г

, в кодировке СР866 — букву

У

, в кодировке KOI8-R — букву

Ц

, в ISO8859-5 — букву

у

, в MacCyrillic — букву

г

.

Если исходный кириллический ASCII-текст был в одной из этих кодировок, а местная кодировка СР1251, то Unicode-символы строки Java не будут соответствовать кириллице.

В этих случаях используются последние два конструктора, в которых параметром

encoding

указывается, какую кодовую таблицу использовать конструктору при создании строки.

Листинг 5.1 показывает различные случаи записи кириллического текста. В нем создаются три массива байто'в, содержащих слово "Россия" в трех кодировках.

Массив

byteCP1251

содержит слово "Россия" в кодировке СР1251. 

Массив

byteСP866

содержит слово "Россия" в кодировке СР866. 




Содержание  Назад  Вперед