Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: MySQL и кодировки  (Прочитано 5699 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Prophet

  • Автор темы
  • Новичок
  • *
  • Сообщений: 6
    • Просмотр профиля
MySQL и кодировки
« : 05 Сентября 2008, 15:49:25 »
Заранее извиняюсь если всё же не туда. Более подходящего раздела не нашел.

Проблема в следующем: есть база мускуля, кириллица в которой по каким-то причинам записана "ежами" (они же "кракозяблы"). Экспорт/импорт происходил через phpmyadmin. Оригинала давно нет.
При выводе на сайт это всё имеет вид "?". Латиница и цифры имеют вид латиницы и цифр.

Вопрос собственно в чём: как можно в убунте (на крайняк вайнотянущийся софт) перевести этот бред обратно в кириллицу не потеряв при этом латиницу?

Оффлайн Nebulosa

  • Активист
  • *
  • Сообщений: 397
    • Просмотр профиля
Re: MySQL и кодировки
« Ответ #1 : 05 Сентября 2008, 16:02:38 »
К Ubuntu данная тема относится также как покраска заборов к строительству.  :coolsmiley:

Это сугубо проблема MySQL и ее кодировок, а также извлечение текста из нее посредством PHP. В интернете она всесторонне освящена.

Если кратко - кодировка sql файла не совпадает с кодировкой  MySQL, у базы и таблиц по-умолчанию. Кроме прочего, и не совпадает кодировка соединения к базе и PHP-клиента в результате получаем "?? ?? ?? ? ?? ?? ?? ??"

Мучайте phpMyAdmin, my.cnf и Google! А также выполняйте SET NAMES ...  перед запросами в php-скриптах.

Оффлайн Lion-Simba

  • Старожил
  • *
  • Сообщений: 1126
    • Просмотр профиля
Re: MySQL и кодировки
« Ответ #2 : 05 Сентября 2008, 16:05:05 »
Нужно на сайте после подключения к БД выполнить такой запрос:
SET NAMES <та кодировка, в которой записи добавлялись в базу>
Очевидно это будет что-то вроде:
SET NAMES CP1251 (скорее всего)
SET NAMES KOI8-R (возможно)
SET NAMES UTF8 (что врятли...)
Оказываю индивидуальную платную техподдержку широкого профиля. Обращаться в ЛС или Jabber.

Оффлайн SauronTheDark

  • Активист
  • *
  • Сообщений: 674
    • Просмотр профиля
Re: MySQL и кодировки
« Ответ #3 : 06 Сентября 2008, 13:15:56 »
Ух известные грабли... там какой то конфиг помню править нада.

Оффлайн Prophet

  • Автор темы
  • Новичок
  • *
  • Сообщений: 6
    • Просмотр профиля
Re: MySQL и кодировки
« Ответ #4 : 08 Сентября 2008, 01:43:25 »
Ух известные грабли... там какой то конфиг помню править нада.
А можно подробнее? SET NAMES либо не помогло, либо я не понял как его использовать.

Оффлайн SauronTheDark

  • Активист
  • *
  • Сообщений: 674
    • Просмотр профиля
Re: MySQL и кодировки
« Ответ #5 : 08 Сентября 2008, 03:42:44 »
Извини вот так просто не вспомню, что я там делал, но вроде бы в каком то конфиге кодировку правил

Оффлайн Prophet

  • Автор темы
  • Новичок
  • *
  • Сообщений: 6
    • Просмотр профиля
Re: MySQL и кодировки
« Ответ #6 : 09 Сентября 2008, 13:46:44 »
Путём длительных манипуляций и танцев с бубном пришел к выводу, что единственный возможный вариант - перевести то, что там есть в нормально читаемый utf8. Как это можно сделать в убунте?

Оффлайн pehser

  • Активист
  • *
  • Сообщений: 586
  • sidux 64bit + KDE4 svn
    • Просмотр профиля
    • Магазин електро и бытовой техники в николаеве
Re: MySQL и кодировки
« Ответ #7 : 09 Сентября 2008, 13:52:04 »
после того как экпортируеш даные в БД через phpmyadmin данные в базе нормально отображаются?

Оффлайн Prophet

  • Автор темы
  • Новичок
  • *
  • Сообщений: 6
    • Просмотр профиля
Re: MySQL и кодировки
« Ответ #8 : 12 Сентября 2008, 13:19:59 »
В .sql файле данные отображаются примерно так: "Ïîä çàêàç"

Оффлайн pehser

  • Активист
  • *
  • Сообщений: 586
  • sidux 64bit + KDE4 svn
    • Просмотр профиля
    • Магазин електро и бытовой техники в николаеве
Re: MySQL и кодировки
« Ответ #9 : 12 Сентября 2008, 13:25:32 »
а чем ты открываеш этот sql файил?

Оффлайн Prophet

  • Автор темы
  • Новичок
  • *
  • Сообщений: 6
    • Просмотр профиля
Re: MySQL и кодировки
« Ответ #10 : 13 Сентября 2008, 17:19:55 »
Чем угодно. Только что попробовал специально ещё и vi. Одинаковый результат для vi, gedit, oo writer, notepad, bluefish.
Неужели нет способа просто перекинуть это в нормальную кириллицу?

Оффлайн Photon79

  • Новичок
  • *
  • Сообщений: 37
  • Злобный линуксоид
    • Просмотр профиля
Re: MySQL и кодировки
« Ответ #11 : 13 Сентября 2008, 23:51:57 »
Ставь себе Kate, он умеет нормально работать с разными кодировками..  Ну или поставить и использовать recode..
Примерно так: recode cp1251..utf8 нужный_файл
Хотя не факт, что у тебя в .sql файле кодировка cp1251..  Одним словом: проще поставить Kate, понять, что за кодировка, и сохранить в нужной кодировке (через Сохранить как..)
« Последнее редактирование: 13 Сентября 2008, 23:55:43 от Photon79 »
AthlonXP 2500+, RAM 768, HDD 240, GF4 MX440 64Mb @ Ubuntu 8.10

Аааааа...  Линеечку сломали..  :(

Оффлайн Agafonov

  • Администратор
  • Старожил
  • *
  • Сообщений: 1114
  • Нам помехи не страшны!
    • Просмотр профиля
    • Живу в сети...
Re: MySQL и кодировки
« Ответ #12 : 14 Сентября 2008, 13:50:07 »
В .sql файле данные отображаются примерно так: "Ïîä çàêàç"

Эта проблема была уже дважды на нашем форуме.
Общего решения без доступа к самой базе нет.
Если есть только дамп, то кратко так:
cat dump.sql | iconv -t cp1252 | iconv -f cp1251 > dump_fixed.sqlно может обломаться во-первых, а во-вторых некоторые символы будут потеряны/искажены, что можно на форуме видеть у старых сообщений.
Ubuntu 16.04 LTS @ Desktop & Servers

Оффлайн Agafonov

  • Администратор
  • Старожил
  • *
  • Сообщений: 1114
  • Нам помехи не страшны!
    • Просмотр профиля
    • Живу в сети...
Re: MySQL и кодировки
« Ответ #13 : 14 Сентября 2008, 13:51:40 »
Ставь себе Kate, он умеет нормально работать с разными кодировками..  Ну или поставить и использовать recode..
Примерно так: recode cp1251..utf8 нужный_файл
Хотя не факт, что у тебя в .sql файле кодировка cp1251..  Одним словом: проще поставить Kate, понять, что за кодировка, и сохранить в нужной кодировке (через Сохранить как..)

Там сложнее. Данные в базе были в одной кодировке, а при записи в дам они интерпретированы, как в другой. Эту кашу просто не разгрести...
Ubuntu 16.04 LTS @ Desktop & Servers

Оффлайн Prophet

  • Автор темы
  • Новичок
  • *
  • Сообщений: 6
    • Просмотр профиля
Re: MySQL и кодировки
« Ответ #14 : 17 Сентября 2008, 14:23:57 »
Знакомый подкинул ссылочку http://2cyr.com/decode/?lang=ru
Помогло. Подкинул до того, как я тему прочитал. Спасибо за попытки помочь и моральную поддержку.

 

Страница сгенерирована за 0.053 секунд. Запросов: 25.