[FAQ] Проблема с UTF8

Темы по наиболее часто задаваемым вопросам по phpBB 3.0.x. Читать в первую очередь!
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
volset
phpBB 1.0.0
Сообщения: 8
Стаж: 17 лет 7 месяцев
Поблагодарили: 1 раз

[FAQ] Проблема с UTF8

Сообщение volset »

Иногда вместо текста отображаются ?????
Ключевое слово здесь иногда :D

Вот пациент http://www.astra-club.org.ua
Для того что бы отловить баг надо несколько раз нажимать кнопку обновить до появления бага.
От браузера независит так как знаки "??????" уже приходят с сервера.
Текст который читается з базы отображается всегда нормально.
PHP Version 5.2.1

Если существует проблема, проявляющаяся в "битом тексте" - замене некоторых символов в сообщении на BOM (знак вопроса в ромбе):

Основной метод решения:
Установить значение mbstring.func_overload равным 0.

Возможное решение:
В корневой директории форума создайте файл .htaccess со следующим содержанием:
.htaccess

Код: Выделить всё

CharsetDisable On
CharsetDefault UTF-8 
CharsetSourceEnc UTF-8
Если после этого теряется работоспособность ресурса, попробовать убрать из вышеуказанного кода строку

Код: Выделить всё

CharsetDisable On
Если не помогает, то вместо первого попробовать добавить в .htaccess строку

Код: Выделить всё

AddDefaultCharset UTF-8
Если у хостера Russian Apache попробуйте добавить в .htaccess

Код: Выделить всё

CharsetDisable On
AddHandler default-handler html
CharsetDefault utf-8
И если совсем ничего не помогает:

Код: Выделить всё

OPEN
includes/utf/utf_tools.php

FIND
function utf8_normalize_nfc($strings)
{

AFTER, ADD
return $strings;
уже приходят с сервера.
Текст который читается з базы отображается всегда нормально.
PHP Version 5.2.1

Если существует проблема, проявляющаяся в
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16947
Стаж: 18 лет 11 месяцев
Откуда: Красноярск
Благодарил (а): 549 раз
Поблагодарили: 1700 раз

Сообщение rxu »

15552 писал(а):memory_limit 32M
Попробуйте сделать 128M, верните на место utf8_normalize_nfc и протестируйте.
Изображение
15552

Сообщение 15552 »

в принципе попробую, но у меня эта проблема возникает крайне редко...

Добавлено спустя 12 минут 24 секунды:

возможно я что-то не правильно делаю, но пишу в .htaccess
php_value memory_limit 128M
параметры в конфигурации не изменяются
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16947
Стаж: 18 лет 11 месяцев
Откуда: Красноярск
Благодарил (а): 549 раз
Поблагодарили: 1700 раз

Сообщение rxu »

Возможно, такой трюк не разрешен хостером, спросите у него, как лучше изменить этот параметр.
Изображение
15552

Сообщение 15552 »

отзвонил им - для моего тарифа не предусмотрено
Аватара пользователя
Merlin
phpBB 1.4.2
Сообщения: 54
Стаж: 20 лет 1 месяц
Откуда: odessa.ua

Сообщение Merlin »

15552
Нас уже больше =)

rxu
Проверил у себя с memory_limit - не помогает. Пока что единственное решение комментить функцию. Правда сделали определенные тесты - сейчас работает апач 1.3.41 + mod_php 5.2.5 - в такой конфигурации глюк проявляется. В качестве теста запустили nginx с тем же php, но в режиме cgi - глюка нету... Теперь еще попытаемся проверить apache 1.3.41 + php + fast_cgi.
Если спросят: "Куда?", отвечай: "В никуда!",
Это правда, и в этом беда!
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16947
Стаж: 18 лет 11 месяцев
Откуда: Красноярск
Благодарил (а): 549 раз
Поблагодарили: 1700 раз

Сообщение rxu »

А если ещё увеличить выделяемую память? Просто есть подозрение, что скрипту, по какой-то причине (возможно, при определенной, пока невыясненной точно конфигурации сервера), этой памяти не хватает, и он не отрабатывает как следует.
Изображение
Аватара пользователя
Selestris
phpBB 1.2.0
Сообщения: 14
Стаж: 19 лет 1 месяц
Откуда: Москва

Сообщение Selestris »

Столкнулся с такой проблемой. Сообщения, содержащие символы ряда европейских языков (чешского, греческого и др.) отображаются на форуме нормально. Но вот в таблице _search_wordlist (поисковый индекс) вместо нестандартных символов идут знаки вопроса. И из-за этого невозможно восстановить базу данных из дампа - выдаётся сообщение Duplicate entry '????????' for key 2 для данной таблицы. И это при том, что для полей этой таблицы указано сравнение utf-8-bin. С phpbb2 такой проблемы вообще не возникало. Есть ли какой-то способ адекватно закодировать нестандартные символы других языков (не кириллица и не латиница) или вообще не включать их в поисковый индекс ?
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16947
Стаж: 18 лет 11 месяцев
Откуда: Красноярск
Благодарил (а): 549 раз
Поблагодарили: 1700 раз

Сообщение rxu »

При восстановлении не нужно включать в дамп поисковые таблицы. Вырезайте их содержимое из дампа и восстанавливайте, потом переиндексируйте.
Изображение
Аватара пользователя
Selestris
phpBB 1.2.0
Сообщения: 14
Стаж: 19 лет 1 месяц
Откуда: Москва

Сообщение Selestris »

Можно, конечно, но хлопотно. Вручную вырезать поисковые индексы из дампа, потом ещё затрачивать много времени на их восстановление. С кодировкой windows-1251 было куда как проще.
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16947
Стаж: 18 лет 11 месяцев
Откуда: Красноярск
Благодарил (а): 549 раз
Поблагодарили: 1700 раз

Сообщение rxu »

С кодировкой 1251 было ровно то же самое.
Хлопотного тут мало. Либо не включать в дамп контент этих таблиц, либо вырезать из дампа - пятиминутное дело.
Время на переиндексацию, думаю, сравнимо со временем, которое вы потратите на восстановление поисковых таблиц из дампа, т.к. они занимают его подавляющую долю.
Изображение
Аватара пользователя
Selestris
phpBB 1.2.0
Сообщения: 14
Стаж: 19 лет 1 месяц
Откуда: Москва

Сообщение Selestris »

Нет, с кодировкой 1251 не было ничего подобного. Нестандартные символы кодировались в сообщениях типа &#251 и т.д., и в поисковый индекс не включались. А в phpbb3 они в таблице постов лежат в Юникоде, как и должно быть, и отображаются нормально. И только в поисковом индексе почему-то допутимы только кириллица и латиница. Никакой логики. Может быть, в базе данных нужно поменять какие-то установки ? Но там и так сравнение utf-8-bin. Совершенно непонятна причина, почему в одной таблице символы нормально закодированы, а другой - знаки вопроса.

Конечно, поисковые индексы можно вручную вырезать из дампа. Но время на переиндексацию несопоставимо со временем восстановления базы данных из дампа. Восстановление из дампа - несколько секунд, реиндексация поисковых таблиц - несколько часов.
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16947
Стаж: 18 лет 11 месяцев
Откуда: Красноярск
Благодарил (а): 549 раз
Поблагодарили: 1700 раз

Сообщение rxu »

Selestris писал(а):Восстановление из дампа - несколько секунд
И какого размера этот дамп?
Изображение
Аватара пользователя
Selestris
phpBB 1.2.0
Сообщения: 14
Стаж: 19 лет 1 месяц
Откуда: Москва

Сообщение Selestris »

Около 25 M. База данных развёртывается примерно за 20 секунд.
Аватара пользователя
crash
Former team member
Сообщения: 6517
Стаж: 20 лет 9 месяцев
Откуда: Бердск

Сообщение crash »

Selestris писал(а):Восстановление из дампа - несколько секунд
это если у вас есть доступ к серверу, а если нет, то лучше переиндексация
Как правильно задавать вопросы
Для особо одаренных: поиск - это есть круто.
FAQ v.2 | FAQ v.3 | Шаблон запроса
Аватара пользователя
Selestris
phpBB 1.2.0
Сообщения: 14
Стаж: 19 лет 1 месяц
Откуда: Москва

Сообщение Selestris »

Обычный SSH-доступ.[/u]

Вернуться в «FAQ (phpBB 3.0.x)»