Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.08.2013, 15:51   #1
Jleksern
Форумчанин
 
Аватар для Jleksern
 
Регистрация: 14.10.2011
Сообщений: 137
По умолчанию Непонятная проблема с кодировками

Здравствуйте уважаемые форумчани.

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

Имею такой скрипт (он выводит последние сообщения с форума).
PHP код:
 <?php
// отредактируйте путь к форуму.
$forum_url 'forum/';
 
// длина названия темы.
$num 50;
 
// укажите путь до конфигурационного файла.
include($forum_url 'library/config.php');
 
// Укажите сколько последних сообщений выводить в "блоке".
$limit 7;
 
// введите id категорий из каких следует брать последние сообщения. Или выберете "ALL" что бы бралось со всего форума.
$forum_ids 'ALL';
 
mysql_connect($config['db']['host'], $config['db']['username'], $config['db']['password']);
mysql_select_db($config['db']['dbname']);
 
$where '';
if (
$forum_ids != 'ALL')
{
    
$where 'WHERE `node_id` IN ($forum_ids)';
}
$sql_forum "SELECT
                `title`, `thread_id`, `reply_count`, `username`, `last_post_date`, `view_count`, `reply_count` FROM `xf_thread` 
{$where} ORDER BY `last_post_date` DESC LIMIT {$limit}";
 
$query_forum mysql_query($sql_forum);
    while (
$topics mysql_fetch_assoc($query_forum))
    {
        
$url_title str_replace(' ''-'$topics['title']);
        
$url_title str_replace('.'''$url_title);
        
$url_title str_replace('?'''$url_title);
        
$url_title str_replace('/''-'$url_title);
        
$url_title str_replace('\\''-'$url_title);
        
$url_title str_replace('"'''$url_title);
$cnum mb_strlen($topics['title']);
if(
$cnum>$num)
{
$topics['title'] = mb_substr($topics['title'], 0$num);
$topics['title'] = $topics['title'] . '...';
}
        echo 
"<li style=\"padding:5px;font-size:12px;\">» <a href=\"{$forum_url}threads/{$url_title}.{$topics['thread_id']}/\" title=\"{$topics['title']} &raquo; Автор - {$topics['username']} \" target=\"_blank\">{$topics['title']}</a> <em>(Просмотров: {$topics['view_count']}, Ответов: {$topics['reply_count']})</em></li>";
    }
?>

Результат

Название тем с форума в "?????".

Добавил запрос
PHP код:
mysql_query ("set character_set_results='utf8'"); 
и ура получилось.

Но ссылки на темы стали не валидные.
На моё мнение потому что в адресной строке есть русские символы, хотя UTF8 стоит.
/forum/index.php?threads/Тест.1/
При попытке перехода, выскакивает ошибка...
Код:
Not Found

The requested URL /forum/threads/Описание.2/ was not found on this server.
Как решить проблему?

Последний раз редактировалось Jleksern; 05.08.2013 в 15:54.
Jleksern вне форума Ответить с цитированием
Старый 05.08.2013, 16:39   #2
Vistar
учащийся
Форумчанин
 
Аватар для Vistar
 
Регистрация: 26.04.2009
Сообщений: 144
По умолчанию

покажи структуру таблицы с кодировкой
Vistar вне форума Ответить с цитированием
Старый 05.08.2013, 17:41   #3
Jleksern
Форумчанин
 
Аватар для Jleksern
 
Регистрация: 14.10.2011
Сообщений: 137
По умолчанию

Код:
mysql> DESCRIBE  xf_thread;
+--------------------+---------------------------------------+------+-----+---------+----------------+
| Field              | Type                                  | Null | Key | Default | Extra          |
+--------------------+---------------------------------------+------+-----+---------+----------------+
| thread_id          | int(10) unsigned                      | NO   | PRI | NULL    | auto_increment |
| node_id            | int(10) unsigned                      | NO   | MUL | NULL    |                |
| title              | varchar(150)                          | NO   |     | NULL    |                |
| reply_count        | int(10) unsigned                      | NO   |     | 0       |                |
| view_count         | int(10) unsigned                      | NO   |     | 0       |                |
| user_id            | int(10) unsigned                      | NO   |     | NULL    |                |
| username           | varchar(50)                           | NO   |     | NULL    |                |
| post_date          | int(10) unsigned                      | NO   |     | NULL    |                |
| sticky             | tinyint(3) unsigned                   | NO   |     | 0       |                |
| discussion_state   | enum('visible','moderated','deleted') | NO   |     | visible |                |
| discussion_open    | tinyint(3) unsigned                   | NO   |     | 1       |                |
| discussion_type    | varchar(25)                           | NO   |     |         |                |
| first_post_id      | int(10) unsigned                      | NO   |     | NULL    |                |
| first_post_likes   | int(10) unsigned                      | NO   |     | 0       |                |
| last_post_date     | int(10) unsigned                      | NO   | MUL | NULL    |                |
| last_post_id       | int(10) unsigned                      | NO   |     | NULL    |                |
| last_post_user_id  | int(10) unsigned                      | NO   |     | NULL    |                |
| last_post_username | varchar(50)                           | NO   |     | NULL    |                |
| prefix_id          | int(10) unsigned                      | NO   |     | 0       |                |
+--------------------+---------------------------------------+------+-----+---------+----------------+
19 rows in set
Код:
mysql> SHOW VARIABLES LIKE "character\_set\_database"; 
+------------------------+-------+
| Variable_name          | Value |
+------------------------+-------+
| character_set_database | utf8  |
+------------------------+-------+
1 row in set



дамп таблицы

Последний раз редактировалось Jleksern; 05.08.2013 в 17:48.
Jleksern вне форума Ответить с цитированием
Старый 05.08.2013, 18:05   #4
Vistar
учащийся
Форумчанин
 
Аватар для Vistar
 
Регистрация: 26.04.2009
Сообщений: 144
По умолчанию

добавь перед выводом текста
header('Content-Type: text/html; charset=utf-8');
Vistar вне форума Ответить с цитированием
Старый 05.08.2013, 18:16   #5
Jleksern
Форумчанин
 
Аватар для Jleksern
 
Регистрация: 14.10.2011
Сообщений: 137
По умолчанию

Цитата:
Сообщение от Vistar Посмотреть сообщение
добавь перед выводом текста
header('Content-Type: text/html; charset=utf-8');
К сожалению это не помогло, но Ваша помощью повлияло на обнаружение проблемы.
Спасибо
Jleksern вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с кодировками ctpz PHP 4 06.10.2012 18:25
Проблема с кодировками, Delphi SonicBob Помощь студентам 4 27.01.2012 12:29
Проблема з кодировками! hoza_syl PHP 3 10.10.2009 15:10
Проблема с кодировками igroman Общие вопросы C/C++ 9 25.01.2009 22:25
Проблема с кодировками, шрифтами.. Gauss Общие вопросы Delphi 13 16.02.2008 23:16