Искать  
 
   
1 из 3
1
Проблемы при каждой установке
Отправлено: 22 Ноябрь 2008 10:10 A.M.   [ Игнорировать ]
Студент
RankRank
Всего сообщений:  92
Зарегистрирован  2008-01-02

Здравствуйте, дело в том, что прикаждой установке мне приходиться проделывать следующую процедуру.

1. Я ставлю обычным образом движок, при этом все таблицы в MySQL записываются в кодироке cp1251
2. Далее, чтобы работало все на utf-8 я проделываю следующие процедуры http://eeclub.ru/comments/reshenie_problem_s_kodirovkoj_utf_8/
3. Закачиваю себе дамп базы данный, прохожусь автозаменой с cp1251 на utf-8, закачиваю его обратно.

Как можно избавиться от этих лишних телодвижений?
Как сделать, чтобы установка таблиц в mysql проходила сразу в utf-8?

Да и сообще, чтобы поставить и сразу работать нормально.

Заранее спасибо за ответы.

Профиль
 
 
Отправлено: 22 Ноябрь 2008 12:40 P.M.   [ Игнорировать ]   [ # 1 ]
Администратор
RankRankRankRank
Всего сообщений:  1354
Зарегистрирован  2008-01-02

а какая у вас кодировка у MySQL “по дефолту” для всех баз?

 Подпись 

booooring…

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

а как мне узнать?

Профиль
 
 
Отправлено: 24 Ноябрь 2008 09:44 A.M.   [ Игнорировать ]   [ # 3 ]
Администратор
Avatar
RankRankRankRank
Всего сообщений:  891
Зарегистрирован  2008-01-07

Создавайте БД сразу в utf-8

Профиль
 
 
Отправлено: 01 Декабрь 2008 09:33 P.M.   [ Игнорировать ]   [ # 4 ]
Студент
Avatar
RankRank
Всего сообщений:  142
Зарегистрирован  2008-01-02

Не знаю из-за кодировки или нет, но поймал багу. Если название новости на русском, то при добавлении новость транслитерируется нормально (http://eeclub.ru/comments/transliteraciya_v_url_title_pri_dobavlenii_novostej/  что первый, что второй методы). Если при редактировании удаляю урл, то после сохранения он превращается в бред типа -6 или просто _.

Мускуль 5.0.67, def charset utf8, def collation utf8_general_ci, innodb. Есть идеи?

Профиль
 
 
Отправлено: 01 Декабрь 2008 09:57 P.M.   [ Игнорировать ]   [ # 5 ]
Администратор
Avatar
RankRankRankRank
Всего сообщений:  1423
Зарегистрирован  2007-12-27
ОгуреЦ - 01 Декабрь 2008 09:33 P.M.

Если при редактировании удаляю урл, то после сохранения он превращается в бред типа -6 или просто _.

для чего ты удаляешь url?

 Подпись 

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

Профиль
 
 
Отправлено: 02 Декабрь 2008 12:36 A.M.   [ Игнорировать ]   [ # 6 ]
Администратор
RankRankRankRank
Всего сообщений:  1354
Зарегистрирован  2008-01-02

а какие могут быть идеи? “Это не бага, это фитча”! Так получилось, что если url’a нет, то просто подставляет title, который напрямик обрабатывается функцией create_url_title в которой есть вот такой интересный кусочек:

if (function_exists('mb_convert_encoding'))
        
{
            $str 
mb_convert_encoding($str'ISO-8859-1''auto');
        
}
        
elseif(function_exists('iconv') AND ($iconvstr = @iconv('''ISO-8859-1'$str)) !== FALSE)
        
{
            $str 
$iconvstr;
        
}
        
else
        
{
            $str 
utf8_decode($str);
        

который идет до обработки convert_accented_characters в которой собственно стоит хук foreign_character_conversion_array на котором обычно завязаны расширения конвертирующие урлы в латыницу. И соответственно, если у вас нет корректно настроенный библиотек, то после прохождения данного кусочка у вас будут оставаться только латыница, цифры и пробелы между словами (_ ). Все русский буквы будут заменены на ? и вычищены, т.к. не могут быть частью урла.

 Подпись 

booooring…

Профиль
 
 
Отправлено: 02 Декабрь 2008 10:21 A.M.   [ Игнорировать ]   [ # 7 ]
Студент
Avatar
RankRank
Всего сообщений:  142
Зарегистрирован  2008-01-02

для чего ты удаляешь url?

Это я как пример действия привел. Проблема на самом деле в том, что при использовании FeedGrabber новости не транслитерируются, а использовать ID в урлах желания нет.

если у вас нет корректно настроенный библиотек

Можно подробнее с этого места?

Профиль
 
 
Отправлено: 02 Декабрь 2008 11:17 A.M.   [ Игнорировать ]   [ # 8 ]
Администратор
RankRankRankRank
Всего сообщений:  1354
Зарегистрирован  2008-01-02

в общем, я нашел причину такого падения - зря грешил на create_url_title. Все дело в... php функции strtolower через которую проходит title перед его переходом в пустой урл. Только вот проблема в том, что не работает функция strtolower корректно с UTF-8 confused. Для этого есть функция mb_strtolower(если она есть у провайдера). Вот такая бага. И если FeedGrabber использую тут же самую функцию - мы получаем ту же ошибку...

 Подпись 

booooring…

Профиль
 
 
Отправлено: 02 Декабрь 2008 11:45 A.M.   [ Игнорировать ]   [ # 9 ]
Студент
Avatar
RankRank
Всего сообщений:  142
Зарегистрирован  2008-01-02

php.ini

extension=php_mbstring.dll
extension=php_mcrypt.dll
extension=php_mhash.dll

[mbstring]
mbstring.language = English
mbstring.language = Japanese

mbstring.internal_encoding = UTF-8

mbstring.http_input = pass
mbstring.http_input = auto
mbstring.http_input = UTF-8
mbstring.http_input = UTF-8, SJIS, EUC-JP

mbstring.http_output = pass
mbstring.http_output = UTF-8

mbstring.encoding_translation = On

mbstring.detect_order = auto
mbstring.detect_order = ASCII, UTF-8, SJIS, EUC-JP, JIS

;mbstring.substitute_character = none;
;mbstring.func_overload = 0

feedgrab использует strtolower, заменил на mb_strtolower а в самом ЕЕ в каком месте тыкать?

Профиль
 
 
Отправлено: 02 Декабрь 2008 11:55 A.M.   [ Игнорировать ]   [ # 10 ]
Администратор
RankRankRankRank
Всего сообщений:  1354
Зарегистрирован  2008-01-02

а как он посылает заголовок в базу? Я не смотрел feedgrab, но думаю было бы логично, если бы он посылал напрямую. То есть замена strtolower в нем было бы достаточно. Но если до сих пор не работает, замените mb_strtolower($str) на  mb_strtolower($str, ‘UTF-8’) или, если и это не поможет smile - на mb_strtolower($str, mb_detect_encoding($str))

 Подпись 

booooring…

Профиль
 
 
Отправлено: 02 Декабрь 2008 12:20 P.M.   [ Игнорировать ]   [ # 11 ]
Студент
Avatar
RankRank
Всего сообщений:  142
Зарегистрирован  2008-01-02

Что-то не помогает, могешь глянуть аттач?

Приложения с файлами
feedgrab.zip  (Размер файла: 25KB - Загрузок: 502)
Профиль
 
 
Отправлено: 02 Декабрь 2008 12:29 P.M.   [ Игнорировать ]   [ # 12 ]
Администратор
RankRankRankRank
Всего сообщений:  1354
Зарегистрирован  2008-01-02

а если вот это:

$encoded_title mb_convert_encoding($this->post[ "title" ]strtoupper('UTF-8'), $source_encoding ); // Fixes warning on next line
$this->post[ "url_title" $REGX->create_url_title$encoded_title ); 

заменить на

$this->post[ "url_title" $REGX->create_url_title(mb_strtolower($this->post[ "title"]mb_detect_encoding($this->post[ "title"]))); 

?

 Подпись 

booooring…

Профиль
 
 
Отправлено: 02 Декабрь 2008 12:41 P.M.   [ Игнорировать ]   [ # 13 ]
Студент
Avatar
RankRank
Всего сообщений:  142
Зарегистрирован  2008-01-02

Не помогло, так же пробовал

$this->post[ "url_title" $REGX->create_url_title(mb_strtolower($this->post[ "title"]'UTF-8')); 
Профиль
 
 
Отправлено: 02 Декабрь 2008 01:16 P.M.   [ Игнорировать ]   [ # 14 ]
Администратор
RankRankRankRank
Всего сообщений:  1354
Зарегистрирован  2008-01-02

У меня сейчас нет возможности для проверки и тестов - проверьте с приаттаченным файлом и скажите, что у вас вышло в виде ошибок с пометками:
<<<<<<TITLE!
<<<<<<URL_TITLE!

Приложения с файлами
feedgrab.zip  (Размер файла: 26KB - Загрузок: 504)
 Подпись 

booooring…

Профиль
 
 
Отправлено: 02 Декабрь 2008 01:27 P.M.   [ Игнорировать ]   [ # 15 ]
Студент
Avatar
RankRank
Всего сообщений:  142
Зарегистрирован  2008-01-02

Content Encoding Error

   

   
   
   

   
     
     

     

The page you are trying to view cannot be shown because it uses an invalid or unsupported form of compression.

     


     
     

The page you are trying to view cannot be shown because it uses an invalid or unsupported form of compression.

  * Please contact the website owners to inform them of this problem.

Сами записи добавились.

Пример тайтла - Необъявленный Фидель
УРЛ как и раньше - -10

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