|
|
|
| Доброго времени суток.
Есть сайт кодировка utf-8, в сайт вставили наш сторонний запрос, результат выдается квадратиками (если "сменить", кодировку страницы на cp1251 то нормально работает на скрипт, а вот сайт криво уже.)...
SHOW VARIABLES LIKE '%char%'
выдает:
character_set_client utf8
character_set_connection utf8
character_set_database utf8
character_set_filesystem binary
character_set_results utf8
character_set_server cp1251
character_set_system utf8
character_sets_dir /usr/share/mysql/charsets/
Заранее большое спасибо. | |
|
|
|
|
|
|
|
для: nurdus
(26.03.2011 в 12:10)
| | 1. Проблемный запрос к какой таблице/таблицам обращается? Какую кодировку имеют эти таблицы и данные в них?
2. Как настраиваете кодировку соединения с MySQL-сервером (какую кодировку указываете Win-1251 или UTF-8)? | |
|
|
|
|
|
|
|
для: cheops
(26.03.2011 в 12:18)
| | 1. к таблице utf8_general_ci, где все поля тоже utf8_general_ci.
2. Сопоставление соединения с MySQL тоже utf8_general_ci.
3. Даже файл скрипта в utf8. | |
|
|
|
|
|
|
|
для: nurdus
(26.03.2011 в 12:21)
| | Т.е. получается, что там данные в Win-1251? Попробуйте вот что, измените CHARACTER SET таблицы на cp1251, а все остальное оставьте без изменений в UTF-8. Дело в том, что MySQL корректно переконвертирует данные даже если они в одной кодировке, а запрашивается другая. А вот если кодировка в таблице указана одна, а данные в ней в другой кодировке - она уже ничего поделать не сможет. | |
|
|
|
|
|
|
|
для: cheops
(26.03.2011 в 12:30)
| | попробовал, таблицу поменял, поля остались теме же... результата пока нет. | |
|
|
|
|
|
|
|
для: nurdus
(26.03.2011 в 12:51)
| | >поля остались теме же..
Т.е. их кодировка указана как UTF-8? Или имеется в виду что-то другое? Если не сложно выполните запрос SHOW CREATE TABLE, чтобы можно было посмотреть текущую структуру таблицы? | |
|
|
|
|
|
|
|
для: cheops
(26.03.2011 в 13:03)
| | да, имею ввиду кодировку.
SHOW CREATE TABLE cms_es_cats выдал только:
cms_es_cats 435245415445205441424c452060636d735 f65735f636174736020280a202060696460 20696e7428313129204e4f54204e552e2e2 | |
|
|
|
|
|
|
|
для: nurdus
(26.03.2011 в 13:12)
| | >да, имею ввиду кодировку.
Нужно добиться того, чтобы кодировка в таблице везде куда попали данные Win-1251 была cp1251 и в самой таблице и столбцах. Это важно еще из-за того, что если таблица будет пополняться, у вас будет смешанные данные - половина в cp1251, половина в utf-8 и тогда решить проблему, без ручного вмешательства будет вообще невозможно. Т.е. все CHARACTER SET должны указывать истинную кодировку данных - тогда MySQL сможет корректно их преобразовывать в ту кодировку, которую запрашивает клиент.
>SHOW CREATE TABLE cms_es_cats выдал только:
>cms_es_cats 435245415445205441424c452060636d735
>f65735f636174736020280a202060696460 20696e7428313129204e4f54204e552e2e2
Хм... странно, а вы в какой среде этот запрос выполняете? | |
|
|
|
|
|
|
|
для: cheops
(26.03.2011 в 13:26)
| | >Нужно добиться того, чтобы кодировка в таблице везде куда попали данные Win-1251 была cp1251 и в самой таблице и столбцах.
сейчас попробуем поменять
>Хм... странно, а вы в какой среде этот запрос выполняете?
phpmyadmin 3.3.10 | |
|
|
|
|
|
|
|
для: nurdus
(26.03.2011 в 13:28)
| | >phpmyadmin 3.3.10
Странно, обычно он такие запросы корректно обрабатывает... | |
|
|
|
|
|
|
|
для: nurdus
(26.03.2011 в 12:10)
| | Вообщем попробовал с измененной кодировкой (на утф-8) нужного поля и самой таблицы перезалить (предварительно удалив содержимое) данные через csv импорт в кодировки 1251... результат тот же... (((
Есть ли какие ли идеи по этому поводу у кого нибудь?... Срочна нужна помощь!.. | |
|
|
|
|
|
|
|
для: nurdus
(28.03.2011 в 01:37)
| | >данные через csv импорт в кодировки 1251...
Вы перекодировали данные 1251 в utf-8 перед помещением в базу данных? Или указывали set names cp1251, если заливались данные в win-1251? | |
|
|
|
|
|
|
|
для: cheops
(28.03.2011 в 11:44)
| | >Вы перекодировали данные 1251 в utf-8 перед помещением в базу данных?
нет, данные остались в 1251
>Или указывали set names cp1251, если заливались данные в win-1251?
поле которое криво отображается имеет кодировку 1251...
и что значит set names cp1251? (из csv данные импортировались не через пхпмайадмин, а через сам сайт) | |
|
|
|
|
|
|
|
для: nurdus
(28.03.2011 в 16:06)
| | phpMyAdmin как раз сам позаботится о настройки кодировки соединения. А вот при работе из ваших собственных скриптов MySQL нужно сообщать в какой кодировки вы предоставляете ей данные. Если вы отсылаете MySQL-серверу данные в кодировке Windows-1251, то первый запрос после установки соединения должен быть
Если передаете данные в кодировке UTF-8, то первый запрос должен быть
Если во время сеанса меняете кодировку отправляемых данных, нужно выполнять соответствующие запросы.
PS В противном случае, MySQL считает, что данные передаются в шведской кодировке. | |
|
|
|
|
|
|
|
для: cheops
(28.03.2011 в 16:15)
| | Большое спасибо, будем пробовать. ) | |
|
|
|
|
|
|
|
для: cheops
(28.03.2011 в 16:15)
| | ОГРОМНОЕ СПАСИБО! Всё работает. Скажите, если могу вам чем нибудь помощь (или отблагодарить...) | |
|
|
|