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

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Без описания
Roler
Отправлено: 22 Августа, 2009 - 08:21:00
Post Id



Посетитель


Покинул форум
Сообщений всего: 458
Дата рег-ции: Авг. 2008  
Откуда: Россия


Помог: 1 раз(а)




Тема избита чуть более чем донельзя, и пишу я только потому, что так и не нашёл решения.
Решил перевести движок на локали с cp1251 на utf8.
Сменил кодировку всех файлов. Сделал дамп базы, сменил кодировку, default charset поставил utf8, залил. В БД кодировка явно utf8, потому что при просмотре из браузера (cp1251) отображаются кракозябры, а если сменить кодировку в браузере на utf8, то кракозябры превращаются в нормальные символы(но без ш и И, плюс сама админка неверно отображается). На сайте тоже И и Ш нет.

В скрипте прописано
CODE (text):
скопировать код в буфер обмена
  1. header('Content-Type: text/html; charset=utf-8');


В мета-тегах кодировка выставлена.

Пробовал писать

CODE (text):
скопировать код в буфер обмена
  1. mysql_query ("SET NAMES `utf-8`");
  2. mysql_query ("set character_set_client='utf-8'");
  3. mysql_query ("set character_set_results='utf-8'");
  4. mysql_query ("set collation_connection='utf8_general_ci'");

Не помогло.

Вопрос, как сделать, чтобы отображались И и ш, и убрать кракозябры в phpMyAdmin?

Версии:
phpMyAdmin 2.6.1
Версия PHP 5.2.4
Версия Apache 2.2.4
Версия MySQL 5.0.45

(Отредактировано автором: 22 Августа, 2009 - 11:02:17)

 
 Top
Ch_chov
Отправлено: 22 Августа, 2009 - 10:49:55
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2121
Дата рег-ции: Июль 2008  
Откуда: из города


Помог: 90 раз(а)




Может быть ты неверно перекодировал файлы?
Посмотри отдельно, как отображается текст из БД и текст из файлов.


Цитата:
при просмотре из браузера (cp1251)

А какая кодировка стоит в браузере по умолчанию?
Поставь автоопределение.

Посмотри заголовки, которые возвращает сервер.
Если Content-Type: text/html; charset=windows-1251 то попробуй
AddDefaultCharset utf-8 в .htaccess
или header('Content-type: text/html; charset=utf-8'); в самом начале скрипта.
 
 Top
Roler
Отправлено: 22 Августа, 2009 - 11:01:40
Post Id



Посетитель


Покинул форум
Сообщений всего: 458
Дата рег-ции: Авг. 2008  
Откуда: Россия


Помог: 1 раз(а)




Ch_chov
Забыл написать, скриптом в начале отправляю
CODE (text):
скопировать код в буфер обмена
  1. header('Content-Type: text/html; charset=utf-8');


Цитата:
А какая кодировка стоит в браузере по умолчанию?
Поставь автоопределение.

Так он сам определяет, что cp1251 в PMA.
 
 Top
Ch_chov
Отправлено: 22 Августа, 2009 - 11:13:45
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2121
Дата рег-ции: Июль 2008  
Откуда: из города


Помог: 90 раз(а)




Цитата:
Так он сам определяет, что cp1251 в PMA.

Ну а какая кодировка на самом деле?
Посмотри заголовки.
(Добавление)
Какой браузер?
 
 Top
Roler
Отправлено: 22 Августа, 2009 - 11:25:08
Post Id



Посетитель


Покинул форум
Сообщений всего: 458
Дата рег-ции: Авг. 2008  
Откуда: Россия


Помог: 1 раз(а)




Ch_chov
Firefox 3.0

Сама PMA на cp1251, а БД в utf8, браузер выводит всё в своей.
 
 Top
Ch_chov
Отправлено: 22 Августа, 2009 - 11:34:11
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2121
Дата рег-ции: Июль 2008  
Откуда: из города


Помог: 90 раз(а)




Проблема только в кодировки БД?
 
 Top
Roler
Отправлено: 22 Августа, 2009 - 12:08:14
Post Id



Посетитель


Покинул форум
Сообщений всего: 458
Дата рег-ции: Авг. 2008  
Откуда: Россия


Помог: 1 раз(а)




Ch_chov
Ещё и буквы И и ш неправильно отображаются.
 
 Top
Ch_chov
Отправлено: 22 Августа, 2009 - 12:43:18
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2121
Дата рег-ции: Июль 2008  
Откуда: из города


Помог: 90 раз(а)




hostinghelp.biz/content/решение-проблем-с-нарушением-отображения-букв-ш-и-и-в-резултате-неудачной-перекодировки-mysq

(Отредактировано автором: 22 Августа, 2009 - 12:44:58)

 
 Top
Roler
Отправлено: 22 Августа, 2009 - 14:24:02
Post Id



Посетитель


Покинул форум
Сообщений всего: 458
Дата рег-ции: Авг. 2008  
Откуда: Россия


Помог: 1 раз(а)




Ch_chov
То есть, вся проблема из-за дампа что-ли?
Я перл в глаза не видел, и не представляю как это сделать, ну ладно, разберёмся Улыбка
Но что с PMA то делать?
Вон те же друпал, джумла - в utf8, а через PMA отображается нормально.
 
 Top
Ch_chov
Отправлено: 23 Августа, 2009 - 10:01:21
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2121
Дата рег-ции: Июль 2008  
Откуда: из города


Помог: 90 раз(а)




Да я думаю не надо перл. Просто нужно правильно сконвертировать базу в utf-8 и все будет работать. В том числе pma.
 
 Top
Roler
Отправлено: 23 Августа, 2009 - 10:33:14
Post Id



Посетитель


Покинул форум
Сообщений всего: 458
Дата рег-ции: Авг. 2008  
Откуда: Россия


Помог: 1 раз(а)




Ch_chov
Я теперь сам не пойму, как её сконвертить, попробовал ещё раз залить, льётся в cp1251 хоть убей. Везде выставил utf8. Хоть через браузер, хоть файлом.
Как же всё-таки залить базу в utf правильно?

(Отредактировано автором: 23 Августа, 2009 - 10:35:32)

 
 Top
Ch_chov
Отправлено: 23 Августа, 2009 - 10:44:27
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2121
Дата рег-ции: Июль 2008  
Откуда: из города


Помог: 90 раз(а)




Сделай дамп базы в cp1251.
Перекодируй его в utf-8 в любом редакторе.
Смени в нём у каждой таблицы DEFAULT CHARSET=cp1251 на DEFAULT CHARSET=utf8
Залей дамп с помощью PMA (не забудь указать кодировку файла при загрузке)
 
 Top
Roler
Отправлено: 23 Августа, 2009 - 10:51:21
Post Id



Посетитель


Покинул форум
Сообщений всего: 458
Дата рег-ции: Авг. 2008  
Откуда: Россия


Помог: 1 раз(а)




Ch_chov
Так и делаю. Default charset сменил, при загрузке поставил кодировку, перекодировал файл...
 
 Top
Roler
Отправлено: 23 Августа, 2009 - 13:17:56
Post Id



Посетитель


Покинул форум
Сообщений всего: 458
Дата рег-ции: Авг. 2008  
Откуда: Россия


Помог: 1 раз(а)




Вроде решил как-то. Перезалил дамп, поигрался с запросами, ничего не понимаю.

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

(Отредактировано автором: 23 Августа, 2009 - 13:40:08)

 
 Top
Ch_chov
Отправлено: 23 Августа, 2009 - 14:22:12
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2121
Дата рег-ции: Июль 2008  
Откуда: из города


Помог: 90 раз(а)




Цитата:
в PHP нет мультибайтового аналога wordwrap

wordwrap вроде коректно работает с юникодом
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB