Перекодировка в юникод
Перекодировка в юникод
Перед большинством Java-программистов рано или поздно встает проблема локализации созданных продуктов. И несмотря на то, что методика локализации достаточно хорошо описана — например, можно обратиться к руководству по адресу http://java.sun.com/docs/books/tutorial/i18n/index.html — существует проблема непосредственно перекодировки строк в юникод.
Чтобы упростить эту операцию была создана простая утилита, которая выполняет перекодировку и позволяет копировать полученные строки в буфер обмена. Скачать ее можно по адресу http://www.forjava.dev. juga.ru/downloads.html. Пакет архива содержит исходные коды и исполняемые классы. Основой алгоритма перекодировки стал метод:
класса: http://java.sun.com/docs/books/tutorial/i18n/text/example-1dot1/UnicodeFormatter.java .
Программа представляет собой разбитую на две части панель (см. рис. 1).
В верхней панели вводим текст, который требуется перекодировать, при этом в нижней панели сразу получим его аналог в юникоде. Для удобства копирования добавлены обработчики контекстного меню, которые вызываются при помощи мыши.
Для обработки нажатия клавиш к контейнеру-источнику добавлены слушатели нажатия и отпускания клавиш, которые вызывают метод перекодировки:
Сергей Бердачук
Berdachuk@tut.by,
http://www.forjava.dev.juga.ru
компьютерная газета
Перед большинством 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 :: текст