Перекодировка в юникод

Перекодировка в юникод

Перед большинством Java-программистов рано или поздно встает проблема локализации созданных продуктов. И несмотря на то, что методика локализации достаточно хорошо описана — например, можно обратиться к руководству по адресу http://java.sun.com/docs/books/tutorial/i18n/index.html — существует проблема непосредственно перекодировки строк в юникод.

Чтобы упростить эту операцию была создана простая утилита, которая выполняет перекодировку и позволяет копировать полученные строки в буфер обмена. Скачать ее можно по адресу http://www.forjava.dev. juga.ru/downloads.html. Пакет архива содержит исходные коды и исполняемые классы. Основой алгоритма перекодировки стал метод:
static public String charToHex(char c) { // Returns hex String representation of char c byte h
i = (byte) (c >
>
>
8); byte lo = (byte) (c & 0xff); return byteToHex(hi) + byteToHex
(lo); }

класса: http://java.sun.com/docs/books/tutorial/i18n/text/example-1dot1/UnicodeFormatter.java .



Программа представляет собой разбитую на две части панель (см. рис. 1).
В верхней панели вводим текст, который требуется перекодировать, при этом в нижней панели сразу получим его аналог в юникоде. Для удобства копирования добавлены обработчики контекстного меню, которые вызываются при помощи мыши.
Для обработки нажатия клавиш к контейнеру-источнику добавлены слушатели нажатия и отпускания клавиш, которые вызывают метод перекодировки:
//Слушатели нажатия и отпускания клавиш srcText.addKeyListener(new java.awt. event.KeyAdapter(
) { public void keyReleased(KeyEvent e) { srcText_keyReleased(e); } public void keyTyped(KeyEvent e)
 { srcText_keyTyped(e); } }); private void srcText_keyReleased (KeyEvent e) { convertToUnicode(); } 
private void srcText_keyTyped (KeyEvent e) { convertToUnicode(); } private void convertToUnicode() {
 String source = srcText.get Text(); char[] ca = source.toCharArray(); targetText.setText(convertCha
rs (ca)); } //Непосредственно перекодировка public String convertChars(char[] array) { StringBuffer 
s = new StringBuffer(); for (int k = 0; k 
><
r>
>
8); if (hi != 0) { s.append(“\\u” + Unicode Formatter.charToHex(array[k])); } else { s.a
ppend(array[k]); } } return s.toString(); } . . .

Сергей Бердачук
Berdachuk@tut.by,
http://www.forjava.dev.juga.ru


компьютерная газета


Компьютерная газета. Статья была опубликована в номере 35 за 2004 год в рубрике soft :: текст

©1997-2024 Компьютерная газета