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

Как создать строку. Сцепление строк.

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

  • Массив byteCP1251 содержит слово "Россия" в кодировке СР1251.
  • Массив byteСP866 содержит слово "Россия" в кодировке СР866.
  • Массив byteKOI8R содержит слово "Россия" в кодировке KOI8-R.

Из каждого массива создаются по три строки с использованием трех кодовых таблиц.

Кроме того, из массива символов с[] создается строка s1, из массива бай-тов, записанного в кодировке СР866, создается строка s2. Наконец, создается ссылка зз на строку-константу.

Листинг 5.1. Создание кириллических строк.

class StringTest{
public static void main(String[] args){
String winLikeWin = null, winLikeDOS = null, winLikeUNIX = null;
String dosLikeWin = null, dosLikeDOS = null, dosLikeUNIX = null;
String unixLikeWin = null, unixLikeDOS = null, unixLikeUNIX = null;
String msg = null;
byte[] byteCp!251 = {
(byte)0xD0, (byte)0xEE, (byte)0xFl,
(byte)0xFl, (byte)0xES, (byte)0xFF
};
byte[] byteCp866 = {
(byte)0x90, (byte)0xAE, (byte)0xE1,
(byte)0xEl, (byte)0xA8, (byte)0xEF
};
byte[] byteKOISR = (
(byte)0xF2, (byte)0xCF, (byte)0xD3,
(byte)0xD3, (byte)0xC9, (byte)0xDl
};
char[] с = {'Р', 'о', 'с', 'с', 'и', 'я'};
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("Ср866"), "Cpl251");
winLikeWin = new String(byteCp1251, "Cpl251"); //Правильно
winLikeDOS = new String(byteCpl251,: "Cp866");
winLikeUNIX – new String(byteCp1251, "KOI8-R");
dosLikeWin = new String(byteCp866, "Cpl251"); // Для консоли
dosLikeDOS = new String(byteCp866, "Cp866"); // Правильно
dosLikeUNIX = new String(byteCp866, "KOI8-R");
unixLikeWin = new String(byteKOISR, "Cpl251");
unixLikeDOS = new String(byteKOISR, "Cp866");
unixLikeUNIX = new String(byteKOISR, "KOI8-R"); // Правильно
System.out.print(msg + "Cpl251: ");
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();
System.out.println(msg + "char array: " + s1);
System.out.println(msg + "default encoding: " + s2);
System.out.println(msg + "string constant: " + s3);
System.out.println();
System.out.println(msg + "Cp1251 › Cp1251: " + winLikeWin);
System.out.println(msg + "Cp1251 › Cp866: " + winLikeDOS);
System.out.println(msg + "Cp1251 › KOI8-R: " + winLikeUNIX);
System.out.println(msg + "Cp866 › Cp1251: " + dosLikeWin);
System.out.println(msg + "Cp866 › Cp866: " + dosLikeDOS);
System.out.println(msg + "Cp866 › KOI8-R: " + dosLikeUNIX);
System.out.println(msg + "KOI8-R › Cpl251: " + unixLikeWin);
System.out.println(msg + "KOI8-R › Cp866: " + unixLikeDOS);
System.out.println(msg + "KOI8-R › KOI8-R: " + unixLikeUNIX);
}
}
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.