Spec-Zone .ru
спецификации, руководства, описания, API
След: Интернационализация
Урок: Работа с текстом
Раздел: Преобразование текста неUnicode
Символьные и Потоки байтов
Домашняя страница > Интернационализация > Работа с текстом

Символьные и Потоки байтов

java.io пакет обеспечивает классы, которые позволяют Вам преобразовывать между потоками символа Unicode и потоками байтов текста не-Unicode. С InputStreamReader class, можно преобразовать потоки байтов в символьные потоки. Вы используете OutputStreamWriter class, чтобы преобразовать символьные потоки в потоки байтов. Следующее число иллюстрирует процесс преобразования:

Это число представляет процесс преобразования

Когда Вы создаете InputStreamReader и OutputStreamWriter объекты, Вы определяете байт, кодирующий это, Вы хотите преобразовать. Например, чтобы преобразовать текстовый файл в UTF-8, кодирующем в Unicode, Вы создаете InputStreamReader следующим образом:

FileInputStream fis = new FileInputStream("test.txt");
InputStreamReader isr = new InputStreamReader(fis, "UTF8");

Если Вы опускаете идентификатор кодирования, InputStreamReader и OutputStreamWriter положитесь на кодировку по умолчанию. Можно определить который кодирование InputStreamReader или OutputStreamWriter использование, вызывая getEncoding метод, следующим образом:

InputStreamReader defaultReader = new InputStreamReader(fis);
String defaultEncoding = defaultReader.getEncoding();

Пример, который следует за шоу Вы, как выполнить преобразования набора символов с InputStreamReader и OutputStreamWriter классы. Полный исходный код для этого примера находится в StreamConverter.java. Эта программа выводит на экран японские символы. Перед испытанием этого проверьте, что соответствующие шрифты были установлены на Вашей системе. Если Вы используете программное обеспечение JDK, которое является совместимым с версией 1.1, сделайте копию font.properties файл и затем заменяет это font.properties.ja файл.

StreamConverter программа преобразовывает последовательность символов Unicode от a String объект в a FileOutputStream из байтов, закодированных в UTF-8. Метод, который выполняет преобразование, вызывают writeOutput:

static void writeOutput(String str) {
    try {
        FileOutputStream fos = new FileOutputStream("test.txt");
        Writer out = new OutputStreamWriter(fos, "UTF8");
        out.write(str);
        out.close();
    } 
    catch (IOException e) {
        e.printStackTrace();
    }
}

readInput метод читает байты, закодированные в UTF-8 от файла, создаваемого writeOutput метод. InputStreamReader объект преобразовывает байты из UTF-8 в Unicode и возвращает результат в a String. readInput метод следующие:

static String readInput() {
    StringBuffer buffer = new StringBuffer();
    try {
        FileInputStream fis = new FileInputStream("test.txt");
        InputStreamReader isr = new InputStreamReader(fis, "UTF8");
        Reader in = new BufferedReader(isr);
        int ch;
        while ((ch = in.read()) > -1) {
            buffer.append((char)ch);
        }
        in.close();
        return buffer.toString();
    } 
    catch (IOException e) {
        e.printStackTrace();
        return null;
    }
}

main метод StreamConverter программа вызывает writeOutput метод, чтобы создать файл байтов, закодированных в UTF-8. readInput метод читает тот же самый файл, преобразовывая байты назад в Unicode. Вот исходный код для main метод:

public static void main(String[] args) {
    String jaString = new String("\u65e5\u672c\u8a9e\u6587\u5b57\u5217");
    writeOutput(jaString); 
    String inputString = readInput();
    String displayString = jaString + " " + inputString;
    new ShowString(displayString, "Conversion Demo");
}

Исходная строка (jaString) должно быть идентичным недавно создаваемой строке (inputString). Чтобы показать, что две строки являются тем же самым, программа связывает их и выводит на экран их с a ShowString объект. ShowString class выводит на экран строку с Graphics.drawString метод. Исходный код для этого class находится в ShowString.java. Когда StreamConverter программа инстанцирует ShowString, следующее окно появляется. Повторение выведенных на экран символов проверяет, что две строки идентичны:

Это - экраны, горячие из программы StreamConverter

Проблемы с примерами? Попытайтесь Компилировать и Выполнить Примеры: FAQ.
Жалобы? Поздравление? Предложения? Дайте нам свою обратную связь.

Предыдущая страница: Кодировки Байта и Строки
Следующая страница: Нормализация текста