Проблема кодировки.

linpc

Гуру форума
Регистрация
6 Апр 2012
Сообщения
178
Реакции
55
И так есть форум: отображается все корректно. А вот если перенести или изменить сообщение: то получается так: ------- ����� ����� � �������� �� ����
Всплывающие окно редактора:
PHP:
echo'<script>SubmitForm = function(){$.ajax({type: "POST",url: "/action/?act=11&f='.$_GET['f'].'&p='.$_GET['p'].'&id='.$_GET['id'].'&tp='.$_GET['tp'].'",cache: false,data:{\'forum_id\' : $(\'#forum_id\').val(),\'id\' : '.$_GET['id'].'},success: function(response){$("#CloseBut").click();if($(\'#forum_id\').val()!=0){location = \'/\'+$(\'#forum_id\').val()+\'/1\';}}});}</script><table cellpadding="0" cellspacing="0" border="0" width="650"><tr><td width="70"><img src="http://static.lastera.ru/image/forum/design/ff1.gif" width="70" height="17" border="0"></td><td><img src="http://static.lastera.ru/image/forum/design/ff2.gif" width="26" height="17" border="0" align="left"><img src="http://static.lastera.ru/image/forum/design/ff3.gif" width="26" height="17" border="0" align="right"></td><td width="70"><img src="http://static.lastera.ru/image/forum/design/ff4.gif" width="70" height="17" border="0"></td></tr><tr><td><img src="http://static.lastera.ru/image/forum/design/ff5.gif" width="70" height="39" border="0"></td><td class="tbg" valign="top" style="padding-top: 8px;"><span class="redText">Перемещение темы</span></td><td><img src="http://static.lastera.ru/image/forum/design/ff6.gif" width="70" height="39" border="0"></td></tr><tr><td class="forBg1Inner">&nbsp;</td><td style="padding-top: 10px"><form onSubmit="SubmitForm();return false;"><table cellpadding="3" cellspacing="0" width="98%" align="center" border="0"><tr><td><strong>Разделы:</strong></td><td width="100%"><select class="inputTxt" style="width:100%;" name="forum_id" id="forum_id">';
            $Cats = mysqli_query($GLOBALS['db_link'],"SELECT `id`,`name` FROM `forum_cat` ORDER BY `id` ASC");
            while($cat=mysqli_fetch_array($Cats)){
                echo'<option value=0>'.$cat['name'].'</option>';
                $Sec = mysqli_query($GLOBALS['db_link'],"SELECT `id`,`name` FROM `forum_section` WHERE `cid`='".$cat['id']."' ORDER BY `id` ASC");
                while($sec=mysqli_fetch_array($Sec)){
                    echo'<option value='.$sec['id'].'>------- '.$sec['name'].'</option>';
                }
            }
            echo'</select></td></tr><tr><td colspan="2" align="center"><div style="position: relative; width: 100%; height: auto;"><input type="submit" name="s" value="  Перенести  " class=buttons></div></td></tr></table></form></td><td class="forBg2Inner">&nbsp;</td></tr><tr><td><img src="http://static.lastera.ru/image/forum/design/ff7.gif" width="70" height="44" border="0"></td><td class="ffbg">&nbsp;</td><td><img src="http://static.lastera.ru/image/forum/design/ff8.gif" width="70" height="44" border="0"></td></tr></table>';

Подключение к БД:
PHP:
$db_link = mysqli_connect(
            'localhost',  /* Хост, к которому мы подключаемся */
            'gamenl',       /* Имя пользователя */
            'W5d2P6l2',   /* Используемый пароль */
            'lastera');     /* База данных для запросов по умолчанию */
if (mysqli_connect_errno()) {
   printf("Подключение к серверу MySQL невозможно. Код ошибки: %s\n", mysqli_connect_error());
   exit;
}
mysqli_query($GLOBALS['db_link'], "SET NAMES cp1251");

/*mysqli_select_db(DB_NAME,mysqli_connect(DB_HOST,DB_USER,DB_PASS));
mysqli_query($GLOBALS['db_link'], "SET NAMES cp1251");*/

function mysqli_result($res, $row, $field=0) {
    $res->data_seek($row);
    $datarow = $res->fetch_array();
    return $datarow[$field];
}

Весь форум работает, отображает корректно. Даже пробовал создать файл: .htaccess выставлял кодировку.
5ac82bfc804f4e6db9efc597ed485974.png
 
  • Заблокирован
  • #2
И так есть форум: отображается все корректно. А вот если перенести или изменить сообщение: то получается так: ------- ����� ����� � �������� �� ����
Всплывающие окно редактора:
PHP:
echo'<script>SubmitForm = function(){$.ajax({type: "POST",url: "/action/?act=11&f='.$_GET['f'].'&p='.$_GET['p'].'&id='.$_GET['id'].'&tp='.$_GET['tp'].'",cache: false,data:{\'forum_id\' : $(\'#forum_id\').val(),\'id\' : '.$_GET['id'].'},success: function(response){$("#CloseBut").click();if($(\'#forum_id\').val()!=0){location = \'/\'+$(\'#forum_id\').val()+\'/1\';}}});}</script><table cellpadding="0" cellspacing="0" border="0" width="650"><tr><td width="70"><img src="http://static.lastera.ru/image/forum/design/ff1.gif" width="70" height="17" border="0"></td><td><img src="http://static.lastera.ru/image/forum/design/ff2.gif" width="26" height="17" border="0" align="left"><img src="http://static.lastera.ru/image/forum/design/ff3.gif" width="26" height="17" border="0" align="right"></td><td width="70"><img src="http://static.lastera.ru/image/forum/design/ff4.gif" width="70" height="17" border="0"></td></tr><tr><td><img src="http://static.lastera.ru/image/forum/design/ff5.gif" width="70" height="39" border="0"></td><td class="tbg" valign="top" style="padding-top: 8px;"><span class="redText">Перемещение темы</span></td><td><img src="http://static.lastera.ru/image/forum/design/ff6.gif" width="70" height="39" border="0"></td></tr><tr><td class="forBg1Inner">&nbsp;</td><td style="padding-top: 10px"><form onSubmit="SubmitForm();return false;"><table cellpadding="3" cellspacing="0" width="98%" align="center" border="0"><tr><td><strong>Разделы:</strong></td><td width="100%"><select class="inputTxt" style="width:100%;" name="forum_id" id="forum_id">';
            $Cats = mysqli_query($GLOBALS['db_link'],"SELECT `id`,`name` FROM `forum_cat` ORDER BY `id` ASC");
            while($cat=mysqli_fetch_array($Cats)){
                echo'<option value=0>'.$cat['name'].'</option>';
                $Sec = mysqli_query($GLOBALS['db_link'],"SELECT `id`,`name` FROM `forum_section` WHERE `cid`='".$cat['id']."' ORDER BY `id` ASC");
                while($sec=mysqli_fetch_array($Sec)){
                    echo'<option value='.$sec['id'].'>------- '.$sec['name'].'</option>';
                }
            }
            echo'</select></td></tr><tr><td colspan="2" align="center"><div style="position: relative; width: 100%; height: auto;"><input type="submit" name="s" value="  Перенести  " class=buttons></div></td></tr></table></form></td><td class="forBg2Inner">&nbsp;</td></tr><tr><td><img src="http://static.lastera.ru/image/forum/design/ff7.gif" width="70" height="44" border="0"></td><td class="ffbg">&nbsp;</td><td><img src="http://static.lastera.ru/image/forum/design/ff8.gif" width="70" height="44" border="0"></td></tr></table>';

Подключение к БД:
PHP:
$db_link = mysqli_connect(
            'localhost',  /* Хост, к которому мы подключаемся */
            'gamenl',       /* Имя пользователя */
            'W5d2P6l2',   /* Используемый пароль */
            'lastera');     /* База данных для запросов по умолчанию */
if (mysqli_connect_errno()) {
   printf("Подключение к серверу MySQL невозможно. Код ошибки: %s\n", mysqli_connect_error());
   exit;
}
mysqli_query($GLOBALS['db_link'], "SET NAMES cp1251");

/*mysqli_select_db(DB_NAME,mysqli_connect(DB_HOST,DB_USER,DB_PASS));
mysqli_query($GLOBALS['db_link'], "SET NAMES cp1251");*/

function mysqli_result($res, $row, $field=0) {
    $res->data_seek($row);
    $datarow = $res->fetch_array();
    return $datarow[$field];
}

Весь форум работает, отображает корректно. Даже пробовал создать файл: .htaccess выставлял кодировку.
5ac82bfc804f4e6db9efc597ed485974.png
Все отлично и понятно. Кроме одного: Сам форум в какой кодировке? cp1251 или utf8?
Вот здесь:
Код:
if (mysqli_connect_errno()) {
   printf("Подключение к серверу MySQL невозможно. Код ошибки: %s\n", mysqli_connect_error());
   exit;
}
mysqli_query($GLOBALS['db_link'], "SET NAMES cp1251");

/*mysqli_select_db(DB_NAME,mysqli_connect(DB_HOST,DB_USER,DB_PASS));
mysqli_query($GLOBALS['db_link'], "SET NAMES cp1251");*/

Указана явная кодировка cp1251, поэтому и данные которые получаются из таблицы в кодировке cp1251. Вернее они сохраняются туда именно в такой кодировке, а соответственно выдаются в той же самой. Поэтому если у вас сам форум на utf8 и данные которые вытягиваются с БД в кодировке сp1251 это и будет вызывать подобные кракозябры.
Опять же, если все нормально и форум и БД в одной кодировке cp1251, то нужно искать где собственно указана явная кодировка или же попробовать просто сохранить сам файл в нужной кодировке и смотреть, что получилось.
 
Назад
Сверху