Re[8]: Перекодировка Cp1251 -> UTF-8 или заглавная буква "И"
От: Madjack  
Дата: 09.03.10 10:40
Оценка:
Здравствуйте, Donz, Вы писали:

D>Здравствуйте, Madjack, Вы писали:


D>Тебе перед отправкой на сервер нужно получить массив байт из строки, которую ввел пользователь, в кодировке UTF-8, правильно?


H>>>String fio = field.getText(); // или что там нужно

M>>Здесь строка fio будет в кодировке системы. Если на винде то в cp1251. А мне нужна в utf-8. Соответственно вместо:
D>Нет, здесь строка будет во внутренней кодировке ява-платформы (UTF-16), но для тебя это не имеет значения.

M>>String text = jtextfield1.getText();

M>>bytes[] bytes = text.getBytes("utf-8");
M>>String utftext = new String(bytes);
D>Этот код не имеет смысла. Ты получаешь строку, потом получаешь из нее массив байт в кодировке UTF-8, потом из этого массива байт снова пытаешься создать строку, но кодировку не указываешь, а значит подставляется кодировка по умолчанию, равная кодировке ОС. Для винды это windows-1251. Естественно, что ты получаешь фигню.

M>>я пишу одной строчкой

M>>String text = jtextfield1.getText().getBytes("utf-8");
D>Почему String text? Вот так правильно из строки получить массив байт в кодировке utf-8:
D>byte[] textBytes = jtextfield1.getText().getBytes("UTF-8");

D>Если хочешь проверить, что все правильно, то можно создать из этого массива байт строку:

D>String test = new String( textBytes, "UTF-8" );

В принципе верно. Но как теперь в SOAP у которого на входе должна быть строка отдать этот массив байт?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.