Проблема с 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 »</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-документа и должны располагаться ближе к вершине (между
и head>). Если вы не уверены, какой из них использовать, используйте html4 для поддержки старых браузеров, html5, если поддержка современных браузеров достаточна.