Использовался Денвер на локалхосте: Apache/2.2.4 (Win32) mod_ssl/2.2.4 OpenSSL/0.9.8d PHP/5.2.4 MySQL 5.0.45 В некоторых местах появились вопросы вместо русских букв. Прямо посреди слова: Сe��час на сайте ��азделы По��ожие материалы С��учайная новость Сам сайт разрабатывался на Joomla 1.5 (т.е. изначально в UTF-8 и SET NAMES 'utf8' прописаны), таблицы базы MySQL utf8_general_ci модуль mbstring подключён Попробовав перенести сайт на хостинговый виртуальный сервер я получил полностью рабочий сайт. Но проблема в том, что этот сервер не мой, а сайт планируется установить на выделенный сервер php 5.2.6 /Apache 2.2.9 /MySQL 5.0.51a в котором также наблюдаются аналогичные проблемы. Подскажите, что править на сервере или в конфигах компонентов, чтобы заставить корректно отрабатывать UTF-8, т.к. понятно, что проблема не в скрипте, а в настройках сервера. PS Пробовал на локалхосте ставить более старые компоненты php4 /Apache 1.3 /MySQL4 (точные версии не помню, но всё это входит в Денвер2) - ситуация аналогичная - UTF-8 туфтит PPS штукой mbstring.func_overload воспользоваться не получится - со скриптом несовместима.
Не понял вопроса. mbstring просто включил как модуль PHP и всё. Что вы имеете ввиду, и как это посмотреть?
О как. Я на самом деле через .htaccess пробовал это прописать - не помогало, но и в php.ini много всякой интересности: Код (Text): [mbstring] ; language for internal character representation. ;mbstring.language = Japanese ; internal/script encoding. ; Some encoding cannot work as internal encoding. ; (e.g. SJIS, BIG5, ISO-2022-*) ;mbstring.internal_encoding = EUC-JP ; http input encoding. ;mbstring.http_input = auto ; http output encoding. mb_output_handler must be ; registered as output buffer to function ;mbstring.http_output = SJIS ; enable automatic encoding translation according to ; mbstring.internal_encoding setting. Input chars are ; converted to internal encoding by setting this to On. ; Note: Do _not_ use automatic encoding translation for ; portable libs/applications. ;mbstring.encoding_translation = Off ; automatic encoding detection order. ; auto means ;mbstring.detect_order = auto ; substitute_character used when character cannot be converted ; one from another ;mbstring.substitute_character = none; ; overload(replace) single byte functions by mbstring functions. ; mail(), ereg(), etc are overloaded by mb_send_mail(), mb_ereg(), ; etc. Possible values are 0,1,2,4 or combination of them. ; For example, 7 for overload everything. ; 0: No overload ; 1: Overload mail() function ; 2: Overload str*() functions ; 4: Overload ereg*() functions ;mbstring.func_overload = 0 Подскажите, как примерно должно быть?
Вношу изменения - реакции нет. Всё равно отдельные символы ломаются. В данный момент вот такая конфигурация: Код (Text): [mbstring] mbstring.language = Neutral mbstring.internal_encoding = UTF-8 mbstring.http_input = auto mbstring.http_output = UTF-8 mbstring.encoding_translation = 0 mbstring.detect_order = auto mbstring.substitute_character = none; mbstring.func_overload = 0
Сейчас узнал, что на хостинге стоит (это там, где всё хорошо работает): Код (Text): [mbstring] ; language for internal character representation. ;mbstring.language = Japanese ; internal/script encoding. ; Some encoding cannot work as internal encoding. ; (e.g. SJIS, BIG5, ISO-2022-*) ;mbstring.internal_encoding = EUC-JP ; http input encoding. ;mbstring.http_input = auto ; http output encoding. mb_output_handler must be ; registered as output buffer to function ;mbstring.http_output = SJIS ; enable automatic encoding translation according to ; mbstring.internal_encoding setting. Input chars are ; converted to internal encoding by setting this to On. ; Note: Do _not_ use automatic encoding translation for ; portable libs/applications. ;mbstring.encoding_translation = Off ; automatic encoding detection order. ; auto means ;mbstring.detect_order = auto ; substitute_character used when character cannot be converted ; one from another ;mbstring.substitute_character = none; ; overload(replace) single byte functions by mbstring functions. ; mail(), ereg(), etc are overloaded by mb_send_mail(), mb_ereg(), ; etc. Possible values are 0,1,2,4 or combination of them. ; For example, 7 for overload everything. ; 0: No overload ; 1: Overload mail() function ; 2: Overload str*() functions ; 4: Overload ereg*() functions ;mbstring.func_overload = 0 Чую не в mbstring проблема-то...
Мне помогло следующее, это скорее всего MySQL кодит у тебя в другую кодировку... Открой файл конфига мускула my.ini и добавь в него или исправь следующее: [mysql] default-character-set = utf8 [mysqld] default-character-set= utf8 character_set_server = utf8 Мне помогло, думаю у тебя проблема в этом же.