Читаем Java 7 полностью

Если же на компьютере сделаны местные установки, как говорят на жаргоне "установлена локаль" (locale) (в MS Windows это выполняется утилитой Regional Options (Язык и стандарты) в окне Control Panel (Панель управления)), то компилятор, прочитав эти установки, создаст символы Unicode, соответствующие местной кодовой странице. В русифицированном варианте MS Windows это обычно кодовая страница CP1251.

Если исходный массив с кириллическим ASCII-текстом был в кодировке CP1251, то строка Java будет создана правильно. Кириллица попадет в свой диапазон '\u0400'— '\u04FF' кодировки Unicode.

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

□ в MS-DOS применяется кодировка CP866;

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

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

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

Например, байт 11100011 (0xE3 — в шестнадцатеричной форме) в кодировке CP1251 представляет кириллическую букву г, в кодировке CP866 — букву у, в кодировке KOI8-R — букву ц, в ISO8859-5 — букву у, в MacCyrillic — букву г.

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

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

Листинг 5.1 показывает различные случаи записи кириллического текста. В нем создаются три массива байтов, содержащих слово "Россия" в трех кодировках:□ массив byteCp1251 содержит слово "Россия" в кодировке CP1251;□ массив byteCp866 содержит слово "Россия" в кодировке CP866;□ массив byteKOI8R содержит слово "Россия" в кодировке KOI8-R.Из каждого массива создаются по три строки с использованием трех кодовых таблиц.Кроме того, из массива символов c[] создается строка s1, из массива байтов, записанного в кодировке CP866, создается строка s2. Наконец, создается ссылка s3 на строку-константу.Листинг 5.1. Создание кириллических строк

class StringTest{

null,winLikeUNIX =null
null,dosLikeUNIX =null
null,unixLikeUNIX =null

public static void main(String[] args){ String winLikeWin = null, winLikeDOS String dosLikeWin = null, dosLikeDOS String unixLikeWin = null, unixLikeDOS String msg = null; byte[] byteCp1251 = {

(byte)0xD0, (byte)0xEE, (byte)0xF1, (byte)0xF1, (byte)0xE8, (byte)0xFF

};

byte[] byteCp866 = {

(byte)0x90, (byte)0xAE, (byte)0xE1, (byte)0xE1, (byte)0xA8, (byte)0xEF

};

byte[] byteKOI8R = {

(byte)0xF2, (byte)0xCF, (byte)0xD3, (byte)0xD3, (byte)0xC9, (byte)0xD1

};

char[] c = {'Р', 'о', 'с', 'с', 'и', 'я'};

String s1 = new String(c);

String s2 = new String(byteCp866); // Для консоли MS Windows

String s3 = "Россия";

System.out.println(); try{

// Сообщение в Cp866 для вывода на консоль MS Windows
msg = new String("\"Россия\" в ".getBytes("Cp866") ,"Cp1251");
winLikeWin= newString(byteCp1251,"Cp1251");//Правильно
winLikeDOS= newString(byteCp1251,"Cp866");
winLikeUNIX= newString(byteCp1251,"KOI8-R");
dosLikeWin= newString(byteCp866,"Cp1251");//Для консоли
dosLikeDOS= newString(byteCp866,"Cp866");//Правильно
dosLikeUNIX= newString(byteCp866,"KOI8-R") ;
unixLikeWin= newString(byteKOI8R,"Cp1251");
unixLikeDOS= newString(byteKOI8R,"Cp866");
unixLikeUNIX= newString(byteKOI8R,"KOI8-R") ;//Правильно

System.out.print(msg + "Cp1251: ");

System.out.write(byteCp1251);

System.out.println();

System.out.print(msg + "Cp866 : ");

System.out.write(byteCp866);

System.out.println();

System.out.print(msg + "KOI8-R: ") ;

System.out.write(byteKOI8R);

}catch(Exception e){ e.printStackTrace();

}

System.out.println();

System.out.println();

"char array :II+s1);
"default encoding:II+s2);
"string constant :II+s3);
"Cp1251 ->Cp1251II+winLikeWin);
"Cp1251 ->Cp866 :II+winLikeDOS);
"Cp1251 ->KOI8-RII+winLikeUNIX);
"Cp866 ->Cp1251II+dosLikeWin);
"Cp866 ->Cp866 :II+dosLikeDOS);
"Cp866 ->KOI8-RII+dosLikeUNIX);
"KOI8-R ->Cp1251II+unixLikeWin);
"KOI8-R ->Cp866 :II+unixLikeDOS);
"KOI8-R ->KOI8-RII+unixLikeUNIX)
Перейти на страницу:

Все книги серии В подлиннике

Java 7
Java 7

Рассмотрено все необходимое для разработки, компиляции, отладки и запуска приложений Java. Изложены практические приемы использования как традиционных, так и новейших конструкций объектно-ориентированного языка Java, графической библиотеки классов Swing, расширенной библиотеки Java 2D, работа со звуком, печать, способы русификации программ. Приведено полное описание нововведений Java SE 7: двоичная запись чисел, строковые варианты разветвлений, "ромбовидный оператор", NIO2, новые средства многопоточности и др. Дано подробное изложение последней версии сервлетов, технологии JSP и библиотек тегов JSTL. Около двухсот законченных программ иллюстрируют рассмотренные приемы программирования. Приведена подробная справочная информация о классах и методах Core Java API.

Ильдар Шаукатович Хабибуллин

Программирование, программы, базы данных

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных