Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Кодировка: с 1251 на utf8
Покинул форум
Сообщений всего: 458
Дата рег-ции: Авг. 2008 Откуда: Россия
Помог: 1 раз(а)
Тема избита чуть более чем донельзя, и пишу я только потому, что так и не нашёл решения.
Решил перевести движок на локали с cp1251 на utf8.
Сменил кодировку всех файлов. Сделал дамп базы, сменил кодировку, default charset поставил utf8, залил. В БД кодировка явно utf8, потому что при просмотре из браузера (cp1251) отображаются кракозябры, а если сменить кодировку в браузере на utf8, то кракозябры превращаются в нормальные символы(но без ш и И, плюс сама админка неверно отображается). На сайте тоже И и Ш нет.
Покинул форум
Сообщений всего: 2121
Дата рег-ции: Июль 2008 Откуда: из города
Помог: 90 раз(а)
Может быть ты неверно перекодировал файлы?
Посмотри отдельно, как отображается текст из БД и текст из файлов.
Цитата:
при просмотре из браузера (cp1251)
А какая кодировка стоит в браузере по умолчанию?
Поставь автоопределение.
Посмотри заголовки, которые возвращает сервер.
Если Content-Type: text/html; charset=windows-1251 то попробуй
AddDefaultCharset utf-8 в .htaccess
или header('Content-type: text/html; charset=utf-8'); в самом начале скрипта.
Roler
Отправлено: 22 Августа, 2009 - 11:01:40
Посетитель
Покинул форум
Сообщений всего: 458
Дата рег-ции: Авг. 2008 Откуда: Россия
Помог: 1 раз(а)
Ch_chov
Забыл написать, скриптом в начале отправляю
Покинул форум
Сообщений всего: 458
Дата рег-ции: Авг. 2008 Откуда: Россия
Помог: 1 раз(а)
Ch_chov
То есть, вся проблема из-за дампа что-ли?
Я перл в глаза не видел, и не представляю как это сделать, ну ладно, разберёмся
Но что с PMA то делать?
Вон те же друпал, джумла - в utf8, а через PMA отображается нормально.
Ch_chov
Отправлено: 23 Августа, 2009 - 10:01:21
Постоянный участник
Покинул форум
Сообщений всего: 2121
Дата рег-ции: Июль 2008 Откуда: из города
Помог: 90 раз(а)
Да я думаю не надо перл. Просто нужно правильно сконвертировать базу в utf-8 и все будет работать. В том числе pma.
Roler
Отправлено: 23 Августа, 2009 - 10:33:14
Посетитель
Покинул форум
Сообщений всего: 458
Дата рег-ции: Авг. 2008 Откуда: Россия
Помог: 1 раз(а)
Ch_chov
Я теперь сам не пойму, как её сконвертить, попробовал ещё раз залить, льётся в cp1251 хоть убей. Везде выставил utf8. Хоть через браузер, хоть файлом.
Как же всё-таки залить базу в utf правильно?
Покинул форум
Сообщений всего: 2121
Дата рег-ции: Июль 2008 Откуда: из города
Помог: 90 раз(а)
Сделай дамп базы в cp1251.
Перекодируй его в utf-8 в любом редакторе.
Смени в нём у каждой таблицы DEFAULT CHARSET=cp1251 на DEFAULT CHARSET=utf8
Залей дамп с помощью PMA (не забудь указать кодировку файла при загрузке)
Roler
Отправлено: 23 Августа, 2009 - 10:51:21
Посетитель
Покинул форум
Сообщений всего: 458
Дата рег-ции: Авг. 2008 Откуда: Россия
Помог: 1 раз(а)
Ch_chov
Так и делаю. Default charset сменил, при загрузке поставил кодировку, перекодировал файл...
Roler
Отправлено: 23 Августа, 2009 - 13:17:56
Посетитель
Покинул форум
Сообщений всего: 458
Дата рег-ции: Авг. 2008 Откуда: Россия
Помог: 1 раз(а)
Вроде решил как-то. Перезалил дамп, поигрался с запросами, ничего не понимаю.
Теперь проблемка возникла, в PHP нет мультибайтового аналога wordwrap, я бы написал своё, но, что-то не могу придумать, как превратить строку в массив символов. Все функции разделение требуют символ-сепаратор, а мне бы просто посимвольно.
Есть у кого-нибудь идеи?
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.