1

Тема: Торрент трекер, кодировка utf-8: "И" - не правильно отображается...

Столкнулся с такой проблемой...

Поставил движок торрент трекера... Возникла проблема с кодировкой: когда принудительно в браузере ставишь utf-8 - отображается все нормально, но при переходе на другую страницу сайта - кодировку ломает.

Пытался поэкспериментировать с базой данных и кодировками таблиц - эффекта ни какого...
Проблема решилась следующим образом (посоветовали): в корень сайта выложен htaccess (AddDefaultCharset UTF-8) . Тоесть теперь при заходе на сайт принудительно включается кодировка UTF-8.

Теперь другая проблема: вместо русской буквы "И" отображается х.знает что...

Наткнулся на совет: заменить букву html кодом: $str=str_replace("И","& # 1048;",$str);
Только куда и где менять - не понял...

Вопрос: может к базе данных SQL запрос сделать или что то в htaccess прописать для правильного отображения буквы И ?

2

Re: Торрент трекер, кодировка utf-8: "И" - не правильно отображается...

а кодировка Windows 1251?я мало в этом понимаю,может поможет

3 (27.07.08 22:18 отредактировано Kravchenko)

Re: Торрент трекер, кодировка utf-8: "И" - не правильно отображается...

L=@=ns пишет:

Наткнулся на совет: заменить букву html кодом: $str=str_replace("И","& # 1048;",$str);
Только куда и где менять - не понял...

Вопрос: может к базе данных SQL запрос сделать или что то в htaccess прописать для правильного отображения буквы И ?

htaccess тут не поможет...  По идее достаточно было в заголовках сайта прописать тэг:
<meta http-equiv="content-type" content="text/html; charset=utf-8" />



В любом скрипте имеются где-нибудь команды:
mysql_connect($host,$user,$pass); и mysql_select_db($base);

Между ними нужно добавить следующее mysql_query("SET NAMES 'utf8'"); //(utf8 без дефиса)

mysql_connect($host,$user,$pass); 
mysql_query("SET NAMES 'utf8'"); //добавлено, чтоб буржуйский скрипт по русски понимал....
mysql_select_db($base);

Но это все теория...

Есть еще несколько подобных команд, устанавливающих параметры подключения к базе...
Короче, когда у меня возникла эта проблема я добавил следующее...

mysql_query("SET NAMES 'utf8'");
mysql_query("SET collation_connection = 'UTF-8_general_ci'");
mysql_query("SET collation_server = 'UTF-8_general_ci'");
mysql_query("SET character_set_client = 'utf8'");
mysql_query("SET character_set_connection = 'utf8'");
mysql_query("SET character_set_results = 'utf8'");
mysql_query("SET character_set_server = 'utf8'");

Не уверен, что все эти строки обязательны...


Если в этот момент в базе уже есть русский текст он читаться не будет, зато вновь добавленный будет читаться правильно... То есть базу нужно чистить после такой манипуляции...

Будут трудности, пишите. Все проблемы решим...

4

Re: Торрент трекер, кодировка utf-8: "И" - не правильно отображается...

Kravchenko пишет:

По идее достаточно было в заголовках сайта прописать тэг:
<meta http-equiv="content-type" content="text/html; charset=utf-8" />

В том то и дело, что именно там это и прописано.

Но если изменить кодировку на любую другую - будет правильно показывать, если в браузере принудительно поставить utf-8

Начал искать где эти: mysql_connect($host,$user,$pass); и mysql_select_db($base);

ab

5

Re: Торрент трекер, кодировка utf-8: "И" - не правильно отображается...

L=@=ns пишет:

Начал искать где эти: mysql_connect($host,$user,$pass); и mysql_select_db($base);
ab

То, что в скобках - переменные.... искать нужно mysql_connect и mysql_select_db... ab

6

Re: Торрент трекер, кодировка utf-8: "И" - не правильно отображается...

Вот кое что нашел:

global $dbhost, $dbuser, $dbpass, $database;

    if ($GLOBALS["persist"])
        $conres=mysql_pconnect($dbhost, $dbuser, $dbpass);
    else
        $conres=mysql_connect($dbhost, $dbuser, $dbpass);

и дальше...

 mysql_select_db($database)
        or die(ERR_CANT_OPEN_DB." $database - ".mysql_error());

7 (27.07.08 22:56 отредактировано Kravchenko)

Re: Торрент трекер, кодировка utf-8: "И" - не правильно отображается...

Прямо перед mysql_select_db ставьте... Или перед IF... если этот кусок кода - логическое выражение в конструкции IF

mysql_query("SET NAMES 'utf8'");
mysql_select_db($database)
        or die(ERR_CANT_OPEN_DB." $database - ".mysql_error());

8

Re: Торрент трекер, кодировка utf-8: "И" - не правильно отображается...

Kravchenko пишет:
mysql_query("SET NAMES 'utf8'");
mysql_select_db($database)
        or die(ERR_CANT_OPEN_DB." $database - ".mysql_error());

Спасибо огромное, помогло!

Но htaccess (AddDefaultCharset UTF-8) пришлось оставить. Иначе вообще не возможно было ни какую кодировку правильно выставить ab