Перевод из latin1 в utf-8 и дальнейший вывод

donflash

Вареник клуба
Перевод из latin1 в utf-8 и дальнейший вывод

Задача такая - есть vbulletin, который стоит под пятым мускулом.

Вот настройки мускула:

Array
(
[Variable_name] => character_set_client
[Value] => utf8
)

Array
(
[Variable_name] => character_set_connection
[Value] => utf8
)

Array
(
[Variable_name] => character_set_database
[Value] => latin1
)

Array
(
[Variable_name] => character_set_filesystem
[Value] => binary
)

Array
(
[Variable_name] => character_set_results
[Value] => utf8
)

Array
(
[Variable_name] => character_set_server
[Value] => latin1
)

Array
(
[Variable_name] => character_set_system
[Value] => utf8
)

Array
(
[Variable_name] => character_sets_dir
[Value] => /usr/share/mysql/charsets/
)


Сайт пашет под wordpress, который выводит данные в utf-8.... Мне надо дёрнуть данные из форума и показать на главной странице... Как я ни парился с этими кодировками - не пойму в чём трабла, в форуме вывод идёт в cp1251, а данные хранятся в latin1, и всё норма... Но latin1 в utf я никак не могу вывести :( pliz help!
 

Anarki

Новичок
>>в форуме вывод идёт в cp1251, а данные хранятся в latin1, и всё норма...
Ну если так, то в скрипте Wordpress можно попробовать обработать данные приходящие с форума, либо phpшной функцией iconv
либо самими средствами mysql, функция описана в коментариях к iconv кстати http://www.php.net/manual/ru/ref.iconv.php#71644
 

Trianon

Новичок
Наверное, сами данные в кодировке cp1251 лежат.
А метаданные БД и таблицы указаны ошибочно.
Пока У Вас кодировка клиента, кодировка результатов совпадают с прописанной в метаданных кодировкой таблицы, сервер не занимается преобразованием кодировок и отдает содержимое "как есть". А "как есть" оно в cp1251 - в нем Вы его и выводите, когда получается.

По хорошему если, исправлять надо ситуацию.

Либо снимаем дамп, исправляем его, и создаем всю БД по новой.
Либо меняем кодировку на binary (чтобы избежать преобразования) а затем на фактическую (cp1251).
Хотя дамп всё равно стоит снять перед этим.
После того, как прописанная кодировка будет соответствовать фактической, можно будет оператором SET NAMES заказывать кодировку, в которой общаться с сервером. И всё пойдет.
 

donflash

Вареник клуба
Автор оригинала: Anarki
>>в форуме вывод идёт в cp1251, а данные хранятся в latin1, и всё норма...
Ну если так, то в скрипте Wordpress можно попробовать обработать данные приходящие с форума, либо phpшной функцией iconv
либо самими средствами mysql, функция описана в коментариях к iconv кстати http://www.php.net/manual/ru/ref.iconv.php#71644
Дык в том то и дело, что iconv не работает. А вообще почему его надо использовать если mysql выплёвает в utf-8 и у меня вывод весь в utf-8.... Пробывал из latin1 перекодировать - ерунда получается, и mb_convert_encoding не работает... Может какие-то настройки поменять? Сервер мой.... В первый раз такая вот фигня получилась :(

-~{}~ 15.05.07 12:35:

Да и вообще не понятно в какой кодировке хранятся данные форума....

-~{}~ 15.05.07 13:45:

Всё - траблу решил, всем спасибо, но ваша помощь не понадобилась. Тему можно закрывать.
 

donflash

Вареник клуба
Как всегда - через задницу....

Значит так-с.... Делаем с нашей БД следующее: "ALTER DATABASE `db_name` DEFAULT CHARACTER SET cp1251 COLLATE cp1251_general_ci", ставим форум, в файле-конфиге которого расскоментируем в самом низу строчку с кодировкой и ставим кодировку cp1251.... Дальше у меня нормально пошёл импорт данных на главной с форума, но я язык форума (подчёркиваю - язык!, а не данные, которые добавляются) стал кривым... Зайдя в админку нифига не понятно, потому что там были одни вопросики, я всё же нашёл пункт управления языками и нажал на кнопку добавления нового языка... Выбрал тот же файл, который устанавливался при установке форума и нажал "импорт"... Язык стал нормальным... Вот собственно и всё! Если кому нужны подробные описания, то пишите...
 
Сверху