私はしばらくの間、MySQLでのエンコーディングの問題に苦労してきました。ラテン語だけでなく、キリル文字とアラビア語のテキストも含むデータベースを構築しています。それで、これが私がデータベースを作成する方法の例です:
CREATE DATABASE db1
DEFAULT CHARACTER SET utf8
COLLATE utf8_unicode_ci;
次にテーブル:
CREATE TABLE TempTb1
(
ID INT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
arabic VARCHAR(100) NOT NULL
)
DEFAULT CHARACTER SET utf8
COLLATE utf8_unicode_ci;
そして、いくつかのデータを入れてそれを選択すると、奇妙な文字しか表示されません。それで私はそれをテストするために小さなPHPスクリプトを書きましたが、それも機能しません:
<?php
header('Content-type: text/plain; charset=utf-8');
$a = mysql_connect('localhost','root','') or die('Problem connecting to database!');
$b = mysql_select_db('db1') or die('Problem selecting database');
mysql_set_charset('utf8');
mysql_query("set names 'utf8'");
mysql_query('set character set utf8');
$query = mysql_query("SELECT * FROM Tb1;");
while($row = mysql_fetch_assoc($query))
{
$id = $row['ID'];
$name = $row['name'];
$arabic = $row['arabic'];
echo $id.' '.$name.' '.$arabic.PHP_EOL;
}
?>
との両方utf8_unicode_ci
でテストしましutf8_general_ci
た。何が間違っている可能性がありますか?ところで、私はEasyPHP5.2.10を持っています。