Php UTF8将波斯语字符串读取为?在MySQL 5.0中

Php UTF8将波斯语字符串读取为?在MySQL 5.0中,php,mysql,utf-8,phpmyadmin,Php,Mysql,Utf 8,Phpmyadmin,我在MySQL 5.0中有一个表,我用波斯语在表中输入城市名称,并使用一个页面尝试读取特定的城市名称! 它曾经是一个词,但从今天开始,我的页面上的城市名称突然都是“像”! 我转到phpMyAdmin,将所有排序规则设置更改为“utf_posian_ci”,但什么也没有发生! 有趣的是,phpMyAdmin的“浏览”选项显示一切正常(所有城市名称都正常!),但当我尝试从页面使用这种查询获取它们时,事情发生了: $result = dbquery("SELECT * FROM ".DB_CITIES

我在MySQL 5.0中有一个表,我用波斯语在表中输入城市名称,并使用一个页面尝试读取特定的城市名称! 它曾经是一个词,但从今天开始,我的页面上的城市名称突然都是“像”! 我转到phpMyAdmin,将所有排序规则设置更改为“utf_posian_ci”,但什么也没有发生! 有趣的是,phpMyAdmin的“浏览”选项显示一切正常(所有城市名称都正常!),但当我尝试从页面使用这种查询获取它们时,事情发生了:

$result = dbquery("SELECT * FROM ".DB_CITIES." WHERE cty_company_id = ".$_GET['cmp']." AND EXISTS (SELECT cu_cmp_id FROM ".DB_COMPANY_USERS." WHERE cu_cmp_id = ".$_GET['cmp']." AND cu_usr_id = $user_id) AND EXISTS (SELECT ctus_user_id FROM scada_city_users WHERE ctus_user_id = $user_id AND ctus_city_id = cty_id)");

提前谢谢

有一种简单的方法告诉数据库它应该传递UTF-8编码的字符串。只要告诉你的连接对象,你期望哪个字符集,数据库就会为你做其余的事情

$db = new mysqli($dbHost, $dbUser, $dbPw, $dbName);

// tell the db to deliver UTF-8 encoded strings.
$db->set_charset("utf8");

排序规则只定义两个条目的比较方式,与定义字符集不同。你的HTML页面也应该是UTF-8编码的,你可以在这里找到更多信息。

你需要“告诉页面”你试图阅读的内容是UTF8编码的,或者你尝试的任何编码。这不是那么容易,你需要先了解这个主题。您正在寻找编码(而不是排序规则)。但是首先从MySQL手册开始,他们有一章是关于编码的。然后去W3C网站,他们也有编码和网站的帮助。当您完成所有这些工作后,您的代码看起来会有所不同(您还应该了解其间的SQL注入),因此,如果仍然存在问题,请更新代码并改进问题。