Я изучаю программирование на PHP, поэтому я настроил тестовую базу данных и стараюсь делать с ней разные вещи.Таким образом, ситуация такова:
Сортировка базы данных utf8_general_ci.
Есть таблица "книг", созданная по запросу
create table books
( isbn char(13) not null primary key,
author char(50),
title char(100),
price float(4,2)
);
Затем она заполняется некоторыми примерами данных -обратите внимание, что текстовые записи на русском языке.Этот запрос сохраняется как utf-8 без спецификации .sql и выполняется.
insert into books values
("5-8459-0046-8", "Майкл Морган", "Java 2. Руководство разработчика", 34.99),
("5-8459-1082-X", "Кристофер Негус", "Linux. Библия пользователя", 24.99),
("5-8459-1134-6", "Марина Смолина", "CorelDRAW X3. Самоучитель", 24.99),
("5-8459-0426-9", "Родерик Смит", "Сетевые средства Linux", 49.99);
Когда я просматриваю содержимое созданной таблицы через phpMyAdmin, я получаю правильные результаты.
Когда я получаю данные из этой таблицы и пытаюсь отобразить их через php, вместо русских символов появляются вопросительные знаки.Вот фрагмент моего php-кода:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Books</title>
</head>
<body>
<?php
header("Content-type: text/html; charset=utf-8");
mysqli_set_charset('utf8');
@ $db = new mysqli('localhost', 'login', 'password', 'database');
$query = "select * from books where ".$searchtype." like '%".$searchterm."%'";
$result = $db->query($query);
$num_results = $result->num_rows;
for ($i = 0; $i < $num_results; $i++) {
$row = $result->fetch_assoc();
echo "<p><strong>".($i+1).". Title: ";
echo htmlspecialchars (stripslashes($row['title']));
echo "</strong><br />Author: ";
echo stripslashes($row['author']);
echo "<br />ISBN: ";
echo stripslashes($row['isbn']);
echo "<br />Price: ";
echo stripslashes($row['price']);
echo "</p>";
}
...
А вот вывод:
1. Название: Java 2. ??????????? ????????????
Автор: ????? ??????
ISBN: 5-8459-0046-8
Цена: 34.99
Может кто-нибудь указать, что я делаю неправильно?