![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
Kizja |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 81 Регистрация: 15.7.2007 Репутация: нет Всего: нет |
Привет всем!
Возникла проблема с кодировкой, надо считывать из файла текст, который потом будет обрабатываться, но текст из файла приходит не в качественной кодировке - т.е. в тексте встречаются буквы из эстонского языка - ну это такие же как и в немецком языке по сути - и они отображаются неверно. Кодировкой должна быть UTF-8, на винде задавая её работает всё нормально, но если ОС линукс, то нет (во всяком случае у меня работало неправильно - пробовал на двух компах, где стоял линукс) - так вот, а на линуксе всё нормально работает с ISO-8859-15, но эта кодировка не удовлетвоят условию поставленной задачи. Т.е. надо чтобы и на виндоусе и на линуксе работало бы с UTF-8, может кто-то встречался с такой проблемой или знает как её решить? Для теста пробовал считать из файла и потом записать в другой:
|
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Не понял в чем проблема. Если ты при чтении и записи указал, что кодировка UTF-8, то именно она и будет использоваться, независимо от настроек ОС.
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
Trogvar |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 16.11.2007 Репутация: нет Всего: нет |
Всем привет!
Сорри, если это оффтоп! Есть проблема: При заполнении формы, если длина дескрипшена больше 2000 символов, то то дескрипшен обрезается до 2000 символов, а полный текст кидается в HTML файл. Только вот проблема в том что при открытии этого HTML файла русский текст не распознается, с английским все нормально. перед текстом дескрипшена стоит: <html><head><meta http-equiv="content-type" content="text/html; charset=utf-8" /></head> выбрана кодировка UTF-8, так как в такой кодировке приходит с JSP формы строка. |
|||
|
||||
Trogvar |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 16.11.2007 Репутация: нет Всего: нет |
Прошу прощения!
Ответ бул в постах по теме уже нашел. Вопрос снимается. P.S.:Еще раз сорри!!! |
|||
|
||||
_Dancer_ |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 6.11.2007 Репутация: нет Всего: нет |
У меня немного другая задача, но проблема такая же!!!
В винде все намано перегоняет в utf8, а в линуксе не хочет, уже который день бюсь- ничего не выходит:( Подозреваю этоиз-за того что у линукса кодировка по умолчанию utf8, но точно сказать не могу Использовала класс java.nio.charset.Charset... Хелп ми, кто-нибудь.. Может есть какие-то тонкости? |
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
_Dancer_, код в студию.
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
_Dancer_ |
|
||||||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 6.11.2007 Репутация: нет Всего: нет |
Ага, значит так.. попробую описать..
Есть методы кодировки в UTF-8 и декодировки
Так,вот в винде работает, в линуксе нет.Прада есть еще следующее.. Я пишу жаббер клиента, По сети приходит xml, Я ситаю побайтобо в массив byte[] buff , потом из эого массива создаю строку new String(buff). Но прием-то нармально проходит.. А при отправке я кодирую строку своей ф-цией myStr=EncodeToUtf8(msg), после этого отправляю по сети ,байты outstr.write(myStr.getBytes(),0,myStr.length()); Ну вот в итоге получается что отправляю я не в Utf, так как при русских буквах сервер сообщает о неверном xml. Вот в принципе немного сумбурно, но основная суть... |
||||||
|
|||||||
LSD |
|
||||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Брр какая жуть и ересь....
Значит так: 1. Строки в Java всегда находятся в кодировке UTF-16, и никаких преобразований кодировки для строк нет. Преобразовывать можно только String->byte[] и byte[]->String. Поэтому методы String EncodeToUtf8(String) и String DencodeFromUtf8(String) неверны в принципе. 2. Использовать Charset.encode() стоит лишь в крайних случаях (когда оптимизируем производительность и т.п.). У тебя же они совсем не к месту. Самое простой способ преобразование это:
Если ты работаешь с сокетами через InputStream/OutputStream, то можешь создать Writer/Reader и сразу писать туда текст:
Плюс ко всему XML парсер умеет работать с бинарными потоками, и можно сразу работать с socketOutputStream. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
||||
|
|||||
_Dancer_ |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 6.11.2007 Репутация: нет Всего: нет |
Спасибо! Пробовала изначально
byte[] bytes = "text".getBytes(charset); String text = new String(bytes, charset); не работало.. вот только сейчас все внимательно глянула и нашла ошибку %) Ошибка была в записи в стрим. |
|||
|
||||
Anatret |
|
||||
Новичок Профиль Группа: Участник Сообщений: 25 Регистрация: 18.9.2007 Репутация: нет Всего: нет |
Здравствуйте. Нужна Ваша помошь Есть JPS стриница с кодировкой KOI8-R
эта страница передает в java.class переменные со значениями, который в свою очередь обрабатывает и передает в базу. передаю вот как
Так вот класс получает значения, этих переменных, если на кирилице, повросиками (????). понять в чем дело не могу помогите плиз. |
||||
|
|||||
Zlatogorov |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 117 Регистрация: 18.12.2007 Где: BW,Stuttgart Репутация: нет Всего: 1 |
Почти тажа проблема, только хуже.
На входе может быть UTF8, UTF8 without BOM, и прочие кодировки. Различие между "классическим" UTF8 и прочими можно найти, а вот между UTF8 without BOM и остальными - нет. Каким образом можно определить в какой кодировке идёт файл? Добавлено через 5 минут и 27 секунд Kizja, единственно что приходит на ум в Вашем случае, так это использовать native2ascii с ключём -reverse перд прочтением файла. |
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Брр... Вы че решили все проблемы с кодировками постить в одном топике?
Anatret, я так понял, у тебя проблема со Struts? Если да, то посмотри эту тему, если не поможет создай новую в разделе J2EE.
Byte Order Mark (BOM) FAQ Если кратко, то BOM это сигнатура которая идет вначале и обозначает, в какой кодировке стоит ожидать данные. Гарантированного способа нет. Если ты знаешь на каком языке будет текст, то можно попробовать частотный анализ или еще, что подобное. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
Zlatogorov |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 117 Регистрация: 18.12.2007 Где: BW,Stuttgart Репутация: нет Всего: 1 |
LSD,
спасибо , я знаю что такое ВОМ, вопрос как отличить файл в кодировке UTF8 without BOM от файлов в другой кодировке. Дело в том, что не извено на каком языке будет документ и в какком редакторе его создают. Например UltraEdit портит UTF файлы. Это сообщение отредактировал(а) Zlatogorov - 29.5.2008, 20:07 |
|||
|
||||
Anatret |
|
|||
Новичок Профиль Группа: Участник Сообщений: 25 Регистрация: 18.9.2007 Репутация: нет Всего: нет |
2 LSD спсб те, помогла ссылка
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |