проблема с отображением (кодировка) |
|
|
|
Студент
Всего сообщений: 113
Зарегистрирован 2010-08-30
|
Здравствуйте. Начал изучать ExpEng, после покупки сайта на этом движке, очень понравился. Теперь делаю свой.
Установил на локалхост (денвер), написал пару новостей. Все нормально но некоторые новости, точнее буквы в этих новостях отображ. некорректно как на картинке так и в панеле адмимистратора.
Рсшрн:
1. Url intepreter
2. File
Но думаю это не из-за них, ибо использую только imagsizer.
Как решить проблему ? спасибо.
Приложения с изображениями
Нажмите на изображение для его просмотра в реальном масштабе
|
|
|
|
|
|
Новичок
Всего сообщений: 47
Зарегистрирован 2008-04-02
|
а какую кодировку используешь?
|
|
|
|
|
|
Студент
Всего сообщений: 113
Зарегистрирован 2010-08-30
|
|
|
|
|
|
|
Member
Всего сообщений: 224
Зарегистрирован 2010-11-20
|
assessor - 21 Ноябрь 2010 03:19 P.M. utf-8
Если так, то все языковые файлы должны быть в кодировке UTF-8 без BOM (это что касается админки),
ну и, дело где-то примерно двухлетней давности, при переходе на utf-8 пришлось в .htaccess добавить
AddDefaultCharset utf-8
Других подводных камней не должно быть, если не используются плагины для укорачивания текста.
|
|
|
|
|
|
Новичок
Всего сообщений: 47
Зарегистрирован 2008-04-02
|
может не совсем по теме, но кому-нибудь да пригодится:
не давно у меня была проблема с кодировкой UTF-8. База данных и сайт были на ней, но тем не менее буква “ш” не отображалась корректно.
Пришлось добавить в файл db.mysql.php (system/db) следующую строку:
mysql_query("SET NAMES UTF8");
после
$this->conn_id = ($this->conntype == 0) ? @mysql_connect ($this->hostname, $this->username, $this->password): @mysql_pconnect($this->hostname, $this->username, $this->password);
|
|
|
|
|
|
Студент
Всего сообщений: 140
Зарегистрирован 2008-01-02
|
Странно, это не проблема с кодировкой.
Так как не хватает 2 букв “ок”. В то же время эти буквы отображаются в этой же фразе нормально.
Может, фраза просто не поместилась в заголовке? И она просто обрезана. Если так, то надо увеличить допустимое число символов в заголовке.
Тем более, что Вы используете utf-8, а в этом случае 1 отображаемый символ равен 2 символам в MySQL. То есть места в строке в 2 раза меньше. Заголовок, кажется, может иметь только 100 символов, то есть 50 символов в utf-8.
Проблема возникает всегда в конце строки? (предположу, что последний 2-байтный символ режется пополам из-за ограничения длины строки и нечетного числа пробелов, которые в utf-8 занимают 1 байт, а не 2)
P.S. Попробуйте создать Custom Field для длинных заголовков. А в шаблоне сделайте условие:
1) если Custom Field пустое, выводить title в качестве заголовка
2) а если Custom Field не пустое, то выводить это поле вместо title.
Ну или отредактируйте (увеличьте) длину поля заголовка varchar(100) в MySQL (через phpMyAdmin).
|
|
|
|
|
|
|
Студент
Всего сообщений: 140
Зарегистрирован 2008-01-02
|
Станислав - 21 Ноябрь 2010 06:01 P.M. проверьте, чтобы в дампе все быдл в юникоде,
посмотрите также эту тему http://eeclub.ru/wiki/Решение_проблем_с_кодировкой_utf-8/
К кодировке это (данный вопрос) не имеет никакого отношения:
Известный украинский дзюдоист получил пожизненный ср + 1 байт (от 2-байтового символа)
5 байтов (пробелы в ASCII) + 47 x 2 (символы в utf-8) + 1 байт (половина 2-байтового символа ‘о’) = 100 байт
При ограничении длины поля title 100 байт. Все сходится до байта. Заголовок не помещается в поле.
|
|
|
|
|
|
Студент
Всего сообщений: 113
Зарегистрирован 2010-08-30
|
Еще 1 момент, на аналогичном сайте (который я покупал) все нормально, есть титлы и больше 50 символов, кодировка utf-8.
|
|
|
|
|
|
Студент
Всего сообщений: 140
Зарегистрирован 2008-01-02
|
assessor - 21 Ноябрь 2010 07:49 P.M. Еще 1 момент, на аналогичном сайте (который я покупал) все нормально, есть титлы и больше 50 символов, кодировка utf-8.
Значит тот, кто Вам его продал, уже изменил длину поля в базе данных (например, увеличив ее в 2 раза). Поэтому там такой проблемы нет. Посмотрите это поле в базе данных через phpMyAdmin, Вы увидите, что его длинна, скорее всего, 200 символов. А на Вашем новом сайте длина 100 символов.
P.S. Если там не 200, а все же 100 символов, значит там заголовки идут вперемежку с ASCII-символами (латинский шрифт), то есть сиволы занимают 1 байт, а не 2.
P.P.S. Вы ведь уже убедились, что у Вас проблема возникает _только_ в конце строки? :)
|
|
|
|
|
|
Студент
Всего сообщений: 113
Зарегистрирован 2010-08-30
|
Попробую сделать, скажите а есть смысл поставить сp1251 ?
p.s а где в базе собственно это значение ?
|
|
|
|
|
|
Member
Всего сообщений: 224
Зарегистрирован 2010-11-20
|
dev - 21 Ноябрь 2010 06:20 P.M. ...При ограничении длины поля title 100 байт. Все сходится до байта. Заголовок не помещается в поле.
Было бы страшнее кошмарного сна, если бы разработчику каждый раз приходилось подсчитывать максимальное количество символов для каждого поля в соответствующей кодировке!
Кроме того, длина кирилических символов - 2, латинских - 1, в других языках может быть даже - 3.
Как быть быть если вводится смешанный текст?
А как на счет пробелов?..
Поэтому разработчики MySQL - умнейшие люди, позаботились об этом, добавив параметр Сравнение (Collation).
В большинстве случаев он должен быть выставлен в utf8_general_ci, тогда понятие длины строки приобретает некую абстрактную форму, и о том, что есть разница в длине символов для различных языков можно просто забыть
Кстати, если в данном случае это значение отличается от вышеуказанного, то его можно переключить, используя phpMyAdmin.
База -> Таблица -> Структура, находим Сранение, меняем его значение на требуемое...
|
|
|
|
|
|
Студент
Всего сообщений: 140
Зарегистрирован 2008-01-02
|
Afgan - 22 Ноябрь 2010 03:43 P.M. В большинстве случаев он должен быть выставлен в utf8_general_ci, тогда понятие длины строки приобретает некую абстрактную форму, и о том, что есть разница в длине символов для различных языков можно просто забыть
Какое отношение имеет регистр букв — строчные или прописные, диакритика и пр. (то есть правила сортировки) — к длине типа поля VARCHAR?
|
|
|
|
|
|
Member
Всего сообщений: 224
Зарегистрирован 2010-11-20
|
dev - 22 Ноябрь 2010 04:29 P.M. Какое отношение имеет регистр букв — строчные или прописные, диакритика и пр. (то есть правила сортировки) — к длине типа поля VARCHAR?
За подробной информацией рекомендую обратиться к оффициальной документации разработчиков...
|
|
|
|
|
|
Студент
Всего сообщений: 140
Зарегистрирован 2008-01-02
|
Afgan - 22 Ноябрь 2010 04:46 P.M. За подробной информацией рекомендую обратиться к оффициальной документации разработчиков...
Вот я и хотел бы ссылочку на цитату из официальной документации.
Иначе Ваши слова выглядят очень беспредметно (и, на мой взгляд, неправильно).
Ссылочку или цитату в студию
|
|
|
|
|
|
Member
Всего сообщений: 224
Зарегистрирован 2010-11-20
|
dev - 22 Ноябрь 2010 05:06 P.M. Ссылочку или цитату в студию
Признаться, сам никогда доки по MySQL не читал, не было потребности попросту, поэтому...
А чтобы убедить в правильности моего утверждения, вызвавшего дискуссию, советую любому желающему проделать элементарный опыт:
1. Создайте таблицу в ufr8_general_ci с полем в формате varchar длиною, скажем - 3.
2. Заполняйте поле поочередно русскими и английскими символами... Есть разница в количестве сохраняемых при этом символов?
3. Поменяйте сравнение поля varchar на latin1_general_ci и повторите то-же...
4. Наконец установите сравнение поля на cp1251_general_ci. В даном варианте текст в кирилице сохраняется нормально, но, некоторые символы могут портитьться при сохранении, и все потому, что установленный тип COLLATE в данном случае не ассоциирован с CHARACTER таблицы.
|
|
|
|