Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Кодировки  (Прочитано 13080 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Nazica
Гость
« : 08-06-2006 21:51 » 

     Есть MySQL (кот. исп. кодировку ИСО-8859-1  судя из документации). Есть Жава, которая исп. какой-то УТФ (вроде 16). Проблема в следующем: когда я заношу запись в базу данных, то вместо русских букв имею '?'. Ну, а если извлекаю запись, то опять же имею '?'. Пытался конвертить из всех возможных кодировок в ИСО при записи, а при чтении обратно - фиг. Вытекающий вопрос: что делать Ага ?
     Второй вопрос по кодировкам и исп. ресуров локализации (класс ResourceBundle). Перехватываю файл "locale.properties" файлом "locale_ru.properties". Описываю какой-то параметр в виде <key>=<value>. В программе получаю или '?' или, если исп. кодировку cp1251, хлам. Такой же вопрос: что делать?
« Последнее редактирование: 14-12-2007 23:53 от Алексей1153++ » Записан
Hoha
Гость
« Ответ #1 : 12-06-2006 06:48 » 

Про ресурсы - http://skipy.dev.juga.ru/root.html
Про MySQL: в настройках сервера должен быть параметр вроде default-codepage или что-то такое. С 4.1 версии, говорят, его можно задавать отдельно для таблиц. Лучше обратись на sql.ru или сюда в раздел по БД, я не знаю как там это влияет на индексирование и пр.
Записан
Nazica
Гость
« Ответ #2 : 12-06-2006 14:14 » 

Ну, я тут подумал и обошел проблему с мусклом так: просто кодирую все сообщения в BASE64, пихаю в базу, ну, а при извлечении, декодирую. Минус в том, что размер данных увеличивается в пару раз Жаль, но это ж база, вытерпит;-).
Записан
Serega
Гость
« Ответ #3 : 12-06-2006 15:51 » 

проблема не только да и не столько в базе
тебе придется каждый раз делать преобразование в Base64 и обратно, тоесть данные надо пропускать через преобразователь нельзя просто отдать клиенту либо следить чтобы все клиенты сами их преобразовывали
на мой взгляд не очень удобно, когда можно просто сказать мускулу чтобы он хранил у себя строки в UTF
Записан
Hoha
Гость
« Ответ #4 : 12-06-2006 17:31 » 

Лучше кодировать таблицы однобайтовой кодировкой. Намного лучше.
Записан
Nazica
Гость
« Ответ #5 : 12-06-2006 18:09 » 

     Ну, я написал библиотеку для работы с этими самыми базами, поэтому это кодирование осуществляется прозрачно (но, как говорится, с затратами времени и памяти). Сам понимаю, что это нехорошо (может быть даже плохо Улыбаюсь ), зато такая временная заглушка (хотя все мы знаем, что ничего продолжительнее временного нет Улыбаюсь ) даже работает.
     В качестве админа баз данных я не очень хорош Жаль: СКЛ, конечно же знаю, а с самими базами работаю тока на уровне данных, используя phpMyAdmin2.5. Посмотрел в нем по кодировкам - их там штук 25, все такие хорошенькие, правда из разновидностей исо, вин, кои, а утф никакого нет Жаль, может я не там ищу?
     А какие однобайтные кодировки имеются в наличии? Желательно, чтобы они были реализованы уже в Жабе.
Записан
Hoha
Гость
« Ответ #6 : 12-06-2006 18:38 » 

ПРОще назвать неоднобайтные - UTF и разная экзотика. Выбери 1251, например. У меня через mysql-jdbc работало с default-codepage=cp1251 (или как-то так) без всяких преобразований.
Записан
Nazica
Гость
« Ответ #7 : 13-06-2006 19:14 » 

Поздравляю! Ну, а у меня не работает Ага. Использовал именно cp1251:-(. Я тут также в разделе по базам данных вопрос поставил. Может быть там помогут;-)
Записан
Nazica
Гость
« Ответ #8 : 17-06-2006 13:22 » 

     Поставил в Эклипсе в файле кодировку УТФ8. Поставил мускл 4.1. Настроил кодировку по умолчанию как УТФ8 (посмотрел - поддерживается). Создал базу с кодировкой УТФ8 по умолчанию. Создал таблицу с этой же кодировкой, создал в таблице текстовое поле с этой же кодировкой. Затем посылаю данные с русским языком (перекодировав (пробовал и так посылать) из УТФ16 в УТФ8) в базу. Извлекаю - получаются великолепные '?'. Я не знаю, что я делаю не правильно, что делаю правильно - в результате в любом случае '?'. Может у меня с виндой чего-нибудь не так? Или в коде (генетическом) ошибка Улыбаюсь ?
     А тут еще прикол (как мне кажется)! Отправляю жсп страницу в браузер. На странице выставляю кодировку УТФ8 стандартным способом исп. тег 'мета'. Браузер (ФайрФокс и ИЕ также) на нее забивает и выставляет ИСО по умолчанию Жаль . Пробовал выставить эту же кодировку УТФ8 в шаблоне проекта на ПХП - все работает замечательно. Я в недоумении (это ОЧЕНЬ слабо сказано).
     Поэтому полюбившийся всем вопрос: "Что делать?" Улыбаюсь
« Последнее редактирование: 14-12-2007 23:54 от Алексей1153++ » Записан
Nazica
Гость
« Ответ #9 : 17-06-2006 21:57 » 

     Интересно то, что после извлечения данных код всех русских символов 63 - т.е. '?'. Думается мне, что бока идут еще при посылке данных в базу, т.е. или база не понимает мою кодировку, или я не понимаю базу;-)
« Последнее редактирование: 14-12-2007 23:55 от Алексей1153++ » Записан
Nazica
Гость
« Ответ #10 : 23-06-2006 22:45 » 

     Почитал на skipy.dev.juga.ru за локализацию. Там в разделе ("Вавилонское столпотворение, часть 3") написано также и за то, как заставить мускл работать с юникодом. Очень такой интересный финт ушами с драйвером ЖДБС Улыбаюсь . Все работает! Бесподобно.
     Ну, а еще можно просто сконнектиться с Аксессом через ОДБС. И все работает тоже как надо (за исключением того, что это Аксесс Ага ). Думаю, это связано с тем, что и Винда и Жаба работают в УТФ-16.
« Последнее редактирование: 23-06-2006 23:58 от Nazica » Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines