![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
VAngeL86 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 71 Регистрация: 29.4.2006 Где: Хабаровск Репутация: 1 Всего: 1 |
Доброго всем времени суток!
Столкнулся со следующей проблемой. Необходимо сохранять файл, чьё имя может быть на различных языках и следовательно содержит символы из Unicode (например günstig [нем.]). В Linux никаких проблем с этим нет. Следующий код прекрасно работает на Linux, но в Windows вместо символа "ü" белеберда.
Выяснил, что если заменить символ "ü" его кодом "\u00FC", то никаких проблем нет. Однако данный вариант не для реалтайма (или я ошибаюсь?). Сам файл с исходным кодом в UTF-8. Подскажите, может кто сталкивался с данной проблемой. Заранее спасибо! |
|||
|
||||
VAngeL86 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 71 Регистрация: 29.4.2006 Где: Хабаровск Репутация: 1 Всего: 1 |
Эх... видимо не простая задача))
Решил извращённым способом, но работает. Имя файла преобразуется в "кодовое представление", вбивается в шаблон кода по созданию файла, который далее компилется и выполняется)). В итоге файл с именем в юникоде)). Если кто то знает способ проще, буду только рад услышать)) А пока, кому интересно привожу свой код: ![]()
Для компиляции/работы данного кода потребуется библиотека JANINO |
|||
|
||||
Dummy |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 263 Регистрация: 21.5.2007 Репутация: 9 Всего: 19 |
Что значит "не для реалтайма"? Последовательность \u00FC в строке заменится на двухбайтный символ в константном пуле (именно то, что надо). Такая форма записи будет одинаково компилироваться при любой кодировке исходников. Так что если по какой-то причине надо хардкодить имя файла, этот способ кажется наиболее подходящим. Это сообщение отредактировал(а) Dummy - 29.6.2010, 18:00 |
|||
|
||||
VAngeL86 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 71 Регистрация: 29.4.2006 Где: Хабаровск Репутация: 1 Всего: 1 |
Это значит, что если я имя файла получаю во время работы программы (по сокету, на мыло, читаю из файла и т.п.), то "захардкодить" не получится. Исходник у меня в UTF-8. Проверено. Даже код писал на Линуксе, а jar запускал на Винде. 1 вариант кода, что я привёл НЕ РАБОТАЕТ под Виндой. Потому и пришлось использовать не очень приятный (лично мне) 2 вариант кода. Я практически уверен, что есть другой способ. Но не нашёл его). Нужен был результат как можно быстрее - я его получил. Но любопытство всё равно осталось)) |
|||
|
||||
Dummy |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 263 Регистрация: 21.5.2007 Репутация: 9 Всего: 19 |
А параметр -encoding utf8 при компиляции указывали?
|
|||
|
||||
VAngeL86 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 71 Регистрация: 29.4.2006 Где: Хабаровск Репутация: 1 Всего: 1 |
я знал, что всё просто))) Спасибо! P.S. Хм... действительно вполне логично было попробовать явно указать компилятору кодировку исходников .... но был аврал)) Это сообщение отредактировал(а) VAngeL86 - 29.6.2010, 19:37 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "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. |