Искать  
 
   
1 из 2
1
проблема с отображением (кодировка)
Отправлено: 21 Ноябрь 2010 02:58 P.M.   [ Игнорировать ]
Студент
Avatar
RankRank
Всего сообщений:  113
Зарегистрирован  2010-08-30

Здравствуйте. Начал изучать ExpEng, после покупки сайта на этом движке, очень понравился. Теперь делаю свой.
Установил на локалхост (денвер), написал пару новостей. Все нормально но некоторые новости, точнее буквы в этих новостях отображ. некорректно как на картинке так и в панеле адмимистратора.
Рсшрн:
1. Url intepreter
2. File
Но думаю это не из-за них, ибо использую только imagsizer.

Как решить проблему ? спасибо.

Приложения с изображениями
problm.jpg
Профиль
 
 
Отправлено: 21 Ноябрь 2010 03:08 P.M.   [ Игнорировать ]   [ # 1 ]
Новичок
Rank
Всего сообщений:  47
Зарегистрирован  2008-04-02

а какую кодировку используешь?

Профиль
 
 
Отправлено: 21 Ноябрь 2010 03:19 P.M.   [ Игнорировать ]   [ # 2 ]
Студент
Avatar
RankRank
Всего сообщений:  113
Зарегистрирован  2010-08-30

utf-8

Профиль
 
 
Отправлено: 21 Ноябрь 2010 03:48 P.M.   [ Игнорировать ]   [ # 3 ]
Member
Avatar
RankRankRank
Всего сообщений:  224
Зарегистрирован  2010-11-20
assessor - 21 Ноябрь 2010 03:19 P.M.

utf-8

Если так, то все языковые файлы должны быть в кодировке UTF-8 без BOM (это что касается админки),
ну и, дело где-то примерно двухлетней давности, при переходе на utf-8 пришлось в .htaccess добавить

AddDefaultCharset utf-

Других подводных камней не должно быть, если не используются плагины для укорачивания текста.

Профиль
 
 
Отправлено: 21 Ноябрь 2010 04:09 P.M.   [ Игнорировать ]   [ # 4 ]
Новичок
Rank
Всего сообщений:  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); 
Профиль
 
 
Отправлено: 21 Ноябрь 2010 05:09 P.M.   [ Игнорировать ]   [ # 5 ]
Студент
RankRank
Всего сообщений:  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).

Профиль
 
 
Отправлено: 21 Ноябрь 2010 06:01 P.M.   [ Игнорировать ]   [ # 6 ]
Администратор
Avatar
RankRankRankRank
Всего сообщений:  1423
Зарегистрирован  2007-12-27

проверьте, чтобы в дампе все быдл в юникоде,
посмотрите также эту тему http://eeclub.ru/wiki/Решение_проблем_с_кодировкой_utf-8/

 Подпись 

ExpressionEngine - SEO-ориентированный движок

Профиль
 
 
Отправлено: 21 Ноябрь 2010 06:20 P.M.   [ Игнорировать ]   [ # 7 ]
Студент
RankRank
Всего сообщений:  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 байт. Все сходится до байта. Заголовок не помещается в поле.

Профиль
 
 
Отправлено: 21 Ноябрь 2010 07:49 P.M.   [ Игнорировать ]   [ # 8 ]
Студент
Avatar
RankRank
Всего сообщений:  113
Зарегистрирован  2010-08-30

Еще 1 момент, на аналогичном сайте (который я покупал) все нормально, есть титлы и больше 50 символов, кодировка utf-8.

Профиль
 
 
Отправлено: 21 Ноябрь 2010 08:07 P.M.   [ Игнорировать ]   [ # 9 ]
Студент
RankRank
Всего сообщений:  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. Вы ведь уже убедились, что у Вас проблема возникает _только_ в конце строки? :)

Профиль
 
 
Отправлено: 21 Ноябрь 2010 08:58 P.M.   [ Игнорировать ]   [ # 10 ]
Студент
Avatar
RankRank
Всего сообщений:  113
Зарегистрирован  2010-08-30

Попробую сделать, скажите а есть смысл поставить сp1251 ?

p.s а где в базе собственно это значение ?

Профиль
 
 
Отправлено: 22 Ноябрь 2010 03:43 P.M.   [ Игнорировать ]   [ # 11 ]
Member
Avatar
RankRankRank
Всего сообщений:  224
Зарегистрирован  2010-11-20
dev - 21 Ноябрь 2010 06:20 P.M.

...При ограничении длины поля title 100 байт. Все сходится до байта. Заголовок не помещается в поле.

Было бы страшнее кошмарного сна, если бы разработчику каждый раз приходилось подсчитывать максимальное количество символов для каждого поля в соответствующей кодировке!
Кроме того, длина кирилических символов - 2, латинских - 1, в других языках может быть даже - 3.
Как быть быть если вводится смешанный текст?
А как на счет пробелов?..

Поэтому разработчики MySQL - умнейшие люди, позаботились об этом, добавив параметр Сравнение (Collation).
В большинстве случаев он должен быть выставлен в utf8_general_ci, тогда понятие длины строки приобретает некую абстрактную форму, и о том, что есть разница в длине символов для различных языков можно просто забыть smile

Кстати, если в данном случае это значение отличается от вышеуказанного, то его можно переключить, используя phpMyAdmin.
База -> Таблица -> Структура, находим Сранение, меняем его значение на требуемое...

Профиль
 
 
Отправлено: 22 Ноябрь 2010 04:29 P.M.   [ Игнорировать ]   [ # 12 ]
Студент
RankRank
Всего сообщений:  140
Зарегистрирован  2008-01-02
Afgan - 22 Ноябрь 2010 03:43 P.M.

В большинстве случаев он должен быть выставлен в utf8_general_ci, тогда понятие длины строки приобретает некую абстрактную форму, и о том, что есть разница в длине символов для различных языков можно просто забыть

Какое отношение имеет регистр букв — строчные или прописные, диакритика и пр. (то есть правила сортировки) — к длине типа поля VARCHAR?

Профиль
 
 
Отправлено: 22 Ноябрь 2010 04:46 P.M.   [ Игнорировать ]   [ # 13 ]
Member
Avatar
RankRankRank
Всего сообщений:  224
Зарегистрирован  2010-11-20
dev - 22 Ноябрь 2010 04:29 P.M.

Какое отношение имеет регистр букв — строчные или прописные, диакритика и пр. (то есть правила сортировки) — к длине типа поля VARCHAR?

За подробной информацией рекомендую обратиться к оффициальной документации разработчиков...

Профиль
 
 
Отправлено: 22 Ноябрь 2010 05:06 P.M.   [ Игнорировать ]   [ # 14 ]
Студент
RankRank
Всего сообщений:  140
Зарегистрирован  2008-01-02
Afgan - 22 Ноябрь 2010 04:46 P.M.

За подробной информацией рекомендую обратиться к оффициальной документации разработчиков...

Вот я и хотел бы ссылочку на цитату из официальной документации.

Иначе Ваши слова выглядят очень беспредметно (и, на мой взгляд, неправильно).

Ссылочку или цитату в студию smile

Профиль
 
 
Отправлено: 22 Ноябрь 2010 05:31 P.M.   [ Игнорировать ]   [ # 15 ]
Member
Avatar
RankRankRank
Всего сообщений:  224
Зарегистрирован  2010-11-20
dev - 22 Ноябрь 2010 05:06 P.M.

Ссылочку или цитату в студию smile

Признаться, сам никогда доки по MySQL не читал, не было потребности попросту, поэтому...
А чтобы убедить в правильности моего утверждения, вызвавшего дискуссию, советую любому желающему проделать элементарный опыт:
1. Создайте таблицу в ufr8_general_ci с полем в формате varchar длиною, скажем - 3.
2. Заполняйте поле поочередно русскими и английскими символами... Есть разница в количестве сохраняемых при этом символов?
3. Поменяйте сравнение поля varchar на latin1_general_ci и повторите то-же... smile
4. Наконец установите сравнение поля на cp1251_general_ci. В даном варианте текст в кирилице сохраняется нормально, но, некоторые символы могут портитьться при сохранении, и все потому, что установленный тип COLLATE в данном случае не ассоциирован с CHARACTER таблицы.

Профиль
 
 
   
1 из 2
1