Проблема с PHP и mysql charset

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

У меня есть база данных MySQL, которая содержит данные, хранящиеся в UTF8_general_ci

Затем в WordPress у меня есть страница, которая вызывает файл номер 1, haku.php, Содержание ниже:

 <?php

$result = mysql_query("SELECT DISTINCT jalleenmyyja_postitp FROM jalleenmyyjat order by jalleenmyyja_postitp");
while($r = mysql_fetch_array($result)){
if ($r["jalleenmyyja_postitp"] != "")echo '<option  value="'.$r["jalleenmyyja_postitp"] .'">'. $r["jalleenmyyja_postitp"] .'</option>';
}


?>

Затем они помещаются в выпадающее меню. Все идет нормально. Затем, когда в выпадающем списке делается какой-то выбор, он должен вернуть результаты, ниже которых он делает файл № 2, который ниже JS:

    function haeyritys(x){
jQuery.ajax({
  type: "POST",
  url: "/yrityshaku.php",
  data: "kaupunki=" + x,
  success: function(data){
    document.getElementById('selResult').innerHTML=data;
  }

});
}

Затем после этого файл № 3. возвращает данные из базы данных.

if($_REQUEST["kaupunki"] !=""){

    $con = mysql_connect($host, $user, $pass);

    mysql_select_db($db_name);

    $result = mysql_query("select * from jalleenmyyjat where jalleenmyyja_postitp = '" .  utf8_decode($_REQUEST["kaupunki"]) ."' order by jalleenmyyja_nimi");



    if (mysql_num_rows($result) == 0){

            echo '<div style="border-bottom:1px solid #ccc;padding:5px;"><b>Ei tuloksia...</b>';

    }else{

        while($r = mysql_fetch_array($result)){

            if ($r["google"] != ""){echo '<a onclick="location.href=\'#top\'" href="'. $r["google"] .'" target="map">';}else{echo '<a onclick="location.href=\'#top\'" href="/eikarttaa.html" target="map">';}

            echo '<div style="border-bottom:1px solid #ccc;padding:5px;"><b>' . $r["jalleenmyyja_nimi"] . '</b>';

            if ($r["jalleenmyyja_osoite"] != "")echo '<br>' . $r["jalleenmyyja_osoite"]; 

            if ($r["jalleenmyyja_postino"] !="" ||  $r["jalleenmyyja_postitp"] !="")echo "<br/>" . $r["jalleenmyyja_postino"] . " ".  $r["jalleenmyyja_postitp"];

            if ($r["jalleenmyyja_puh"] != "") echo "<br/>Puh: ". $r["jalleenmyyja_puh"];

            if ($r["www"] != "")echo '<br/><a  target="_blank" href="'.$r["www"].'">Verkkosivuille &raquo;</a>';

            echo '</div>';

            echo '</a>';


        }   

    }



    mysql_close($con);



}

?>

Тем не менее, иностранные символы являются вопросительными знаками. Если я добавлю mysql_set_charset('utf8'); к файлу № 3, который открывает соединение с базой данных, результаты показывают символы правильно, но данные в выпадающем списке, которые могут иметь символ, не возвращают результаты! так что так или иначе.

1 ответ

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

HTML5:

<meta charset="UTF-8">

HTML4:

<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">

XHTML 1.x:

<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />

XHTML 1.x как XML:

<?xml version="1.0" encoding="UTF-8"?>

Мета-теги находятся в заголовке HTML-документа и должны располагаться ближе к вершине (между и ). Если вы не уверены, какой из них использовать, используйте html4 для поддержки старых браузеров, html5, если поддержка современных браузеров достаточна.

Источник

Другие вопросы по тегам