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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Кодировка русских символов на Linux 
V
    Опции темы
Samotnik
Дата 24.4.2013, 12:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

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



привет!
Есть простая до безобразия задача: Представить строку в формате UTF-8. 
Мой вариант:
Код

String str = new String("ололо трололо".getBytes("UTF-8"), "windows-1251");

на Windows машине работает без проблем. Но на Linux работает не правильно. smile 
PM MAIL   Вверх
beroal
Дата 24.4.2013, 13:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Ну, у меня str == "ололо трололо". Результат на первый взгляд является корректным. Что вас не устраивает и что вы хотите получить?
PM WWW   Вверх
Samotnik
Дата 24.4.2013, 14:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

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



не знаю как у вас, у меня со строки:  "руссо язык" (без ковычек)
На windows результат:
Цитата

руссо язык

На Ubuntu:
Цитата

руссо язык


PM MAIL   Вверх
Samotnik
Дата 24.4.2013, 17:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

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



Прикол. 
Для Линукса вообще не нужно никаких преобразований. Можно просто использовать String, как String, он уже в UTF-8  smile
PM MAIL   Вверх
math64
Дата 24.4.2013, 19:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

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



String всегда - и в Windows, и в Linux - хранится в UTF-16.
При сохранении в массив байт или файл нужно выбрать кодировку.
По умолчанию в Windows (русской!) это windows-1251, а в Ubuntu - UTF8 (в старых версиях Linux, опять же русских - КОИ8Р).
Преобразование же из String в String со сменой кодировки выглядит странно, зачем это?

Добавлено через 5 минут и 38 секунд
Кстати, возможно у Вас проблема с кодировкой исходников - в Widnows это, опять таки по умолчанию, windows-1251, а в Ubuntu - UTF8.
В таком случае, нужно указывать компилятору кодировку исходников, а не пытаться исправить ошибку во время выполнения.
Кроссплатформенные исходники лучше хранить в UTF8.
PM   Вверх
Samotnik
Дата 25.4.2013, 00:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

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



math64, да, в теории мы все сильны  smile 
Как я уже сказал. Есть простейшая до безобразия задача. Представить строку в формате utf8. 
Нужно это для платежной системы. Формируешь строку, у тебя есть ключ, на основе которого ты от строки и ключа береш хэш и посылаешь этот хэш на сервер вместе с данными. Там пых пых сервер берет данные формирует, по сути, такую же строку и зная этот же ключ, берет хэш от строки. И сравнивает хэш свой полученный с тем что пришел. Если все ок, значит все ок.
Если делать все это стандартно - запрос в БД, формирование ТО, формирование запросы и подстановка всех этих данных, то с русским языком начинаются проблемы. Методом проб и ошибок, выяснилось, что указанные мной преобразования в первом посте, помогают решить проблему кириллицы. Но то было на моем локальном компе, как только код попал на линукс сервер, все сломалось. 
Хотя признаться, я до сих пор на 100% так и не понял фразу "сформировать строку в формате UTF8", поскольку в первом моем посте я беру строку в формате utf8 и указываю виндовый чарсет для формирования новой строки. Т.е. по-сути, новая строка в формате windows-1251.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

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

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


 




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


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

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