Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> конвертирование массива байтов из UTF-16 и UCS2 в 
:(
    Опции темы
maxxi
Дата 12.1.2010, 21:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 22.4.2007

Репутация: нет
Всего: нет



здравствуйте!
У меня вопорос - 
Есть например массив байтов, в UTF-16.Например 0xD728 0xD3A5 0x0000 ...............


(Нужно преобразовать его в стринг-переменную, которая в UTF-16 ,или , например в UCS-2.. При правильном преобразовании должна полчиться строка с китайскими символами, если кому интересно).


Есть ли в яве какая-то стандартная функция для этого дела?как например для преобразовании в строку из массива в UTF-8:
Код

String str = new String(buffer1, "UTF-8");


??
Cпасибо

Это сообщение отредактировал(а) maxxi - 12.1.2010, 22:12
PM MAIL   Вверх
dobrolub
Дата 12.1.2010, 22:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 385
Регистрация: 18.12.2009
Где: Vancouver, Canada

Репутация: 11
Всего: 16



ucs-2 и utf-16  по-ходу одно и то же
Код

public class T {
    public static void main(String []args) throws Exception {
        byte[] utf16 = "test".getBytes("UTF-16");
        System.out.println(new String(utf16, "UTF-16"));
    }
}



PM   Вверх
maxxi
Дата 12.1.2010, 22:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 22.4.2007

Репутация: нет
Всего: нет



это понятно. я имею в виду из масства строку сделать.

Например,как из этого массива  0xD728  0xD3A5  0x0000  строку получить(휨 펥)?

Это сообщение отредактировал(а) maxxi - 12.1.2010, 22:21
PM MAIL   Вверх
dobrolub
Дата 12.1.2010, 23:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 385
Регистрация: 18.12.2009
Где: Vancouver, Canada

Репутация: 11
Всего: 16



то что приведено, не массив байтов, а что - не понятно. Вариантов может быть много. 

Объясни как получился такой массив, какой у него тип и порядок байтов.
PM   Вверх
maxxi
Дата 12.1.2010, 23:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 22.4.2007

Репутация: нет
Всего: нет



Суть моей задачи -

допустим пользователь вводит какие-то строковые данные, на китайском, UTF-16/ UCS2 (они не синонимы,UCS2 это устаревшая вещь, немного отличается оти UTF-16 ).

Они преобразовуются в массив байтов, byte[] array, и записываются в таком виде. С этим мне всё понятно.  


Когда нужно будет считать эти данные, нужно преобразовать эти символы опять в китайские буквы.

 (byte)0xD728 относится к первому китайскому символу  (Младшие байты - справа, LE )
(byte)0xD3A5 , ко второму символу. (Младшие байты - справа, LE)
(byte)0x0000 - cимвол конца строки

Это сообщение отредактировал(а) maxxi - 12.1.2010, 23:31
PM MAIL   Вверх
dobrolub
Дата 12.1.2010, 23:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 385
Регистрация: 18.12.2009
Где: Vancouver, Canada

Репутация: 11
Всего: 16



>Они преобразовуются в массив байтов, byte[] array, и записываются в таком виде
ок, а как они преобразуются в массив байтов?
PM   Вверх
dobrolub
Дата 13.1.2010, 01:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 385
Регистрация: 18.12.2009
Где: Vancouver, Canada

Репутация: 11
Всего: 16



 походу это просто Characters у тебя, уже в юникоде

а получить строку из них вот так:

Код

import javax.swing.*;

public class T {
    public static void main(String []args) throws Exception {
        JFrame frame = new JFrame();
        JLabel label = new JLabel("\uD728\uD3A5");
        frame.add(label);
        frame.setVisible(true);
    }
}

user posted image


Это сообщение отредактировал(а) dobrolub - 13.1.2010, 01:06
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0424 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.