У меня есть тайский язык в базе данных MySQL с сопоставлением utf8_unicode_ci
я использовал следующее, чтобы правильно отобразить его на моей веб-странице
<head>
<meta http-equiv="Content-Type" content="text/html" charset="UTF-8" />
<style type="text/css">
.thai {
font-family:Tahoma, Arial Unicode MS;
font-size: 2em;
</style>
</head>
<body>
<div id="content"><span class="thai"><?php echo $row['description2'];?></span></div>
мой файл подключения к БД имеет следующий код
mysqli_query($connection, "SET NAMES UTF8");
Теперь проблема в том, что она отображается правильно, НО моя ПОИСКОВАЯ КОРОБКА не может найти ее, если кто-то пытается выполнить поиск на тайском языке, но выполняет поиск правильно с английским содержанием, присутствующим в базе данных
ниже мой код для поиска
<form method="GET" action="index.php" accept-charset="UTF-8">
<input class="thai" type="text" charset="UTF-8" class="keyword" value="Search" name="search" id="q" onFocus="if(this.value==this.defaultValue) this.value='';" onBlur="if(this.value=='') this.value=this.defaultValue;" /><br />
</form>
<?php
require_once('inc/connect.php');
//NOT SURE IF THE FOLLOWING DECODING IS MAKING ANY SENSE, I still Get the -No result found- for thai language, but it made the boolean error go away
$search1=$_GET['search'];
$search=utf8_decode($search1);
$select1="SELECT * FROM products where id like '%$search%' || title like '%$search%' || size like '%$search%' ||description1 like '%$search%'|| description2 like '%$search%' order by id asc";$result=mysqli_query($connection, $select1);
$num=mysqli_num_rows($result);
if($num > 0)
{
while($row=mysqli_fetch_array($result))
{
$oid=$row['id'];
echo $row['title'];}
}
else{
$ertx="No Records Found In Database";
echo $ertx;
}
?>
Функция utf8_decode не поддерживает преобразование тайских символов, так как формат в PHP, который она преобразует, — это ISO-8859-1, набор символов, подобный ASCII (таким образом, не поддерживающий тайские символы).
Это означает, что тайские символы будут заменены на «?» и поэтому никаких результатов не будет найдено, если у вас нет записей с вопросительными знаками.
Ссылка: http://php.net/manual/en/function.utf8-decode.php
Где произошла логическая ошибка? Это поможет сообществу найти решение вашей проблемы.
С помощью:
error_reporting(E_ALL);
ini_set('display_errors', 1);
включит ошибки времени выполнения PHP
РЕДАКТИРОВАТЬ:
Попробуйте этот код, чтобы получить любые ошибки MySQL:
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
//you need to exit the script, if there is an error
exit();
}
Других решений пока нет …