我正在尝试使用PHP和HTML表单将一些阿拉伯语言数据插入MySQL。当我将数据插入MYSQL表时,表字段将数据表示为مرØبا العالم
。
但是当我使用PHP访问相同数据并在我的网页中显示它时,它会显示正确的数据。我正在使用:
http-equiv="Content-Type" content="text/html; charset=utf-8"
我的网页中的 meta
标记用于显示阿拉伯数据。我的问题是为什么我的数据看起来像这样:MySQL表中的مرØبا العالم
,我应该如何纠正它。
答案 0 :(得分:18)
您必须执行以下两项操作:
utf8_general_ci
(对于字段本身和表以及数据库)。在建立与数据库的连接后立即发送两个命令:
mysql_query("SET NAMES utf8;");
mysql_query("SET CHARACTER_SET utf8;");
答案 1 :(得分:1)
你应该使用这一行:
@mysql_query("SET NAMES 'utf8' ");
见此功能:
function _connect($user, $pass, $host)
{
$conn = mysql_connect($host, $user, $pass);
if (!$conn)
return false;
@mysql_query("SET NAMES 'utf8' ");
//more....
}
答案 2 :(得分:1)
您没有提到您正在使用的MySQL版本,但如果使用5.0.7或更高版本,则根据official PHP documentation:
这是更改charset的首选方法。建议不要使用mysql_query()来设置它(例如SET NAMES utf8)。有关更多信息,请参阅MySQL字符集概念部分。
例如, 假设您使用的是mysql_query扩展名。
<?php
$link = mysql_connect('localhost','user1','pass1',TRUE);
mysql_selectdb('db1', $link);
mysql_set_charset('utf8',$link);
?>
其他注意事项:
utf8_general_ci
作为附注,不鼓励使用mysql_query扩展名。相反,应使用MySQLi或PDO_MySQL扩展名。
有关详细信息,另请参阅MySQL: choosing an API指南和related FAQ。
答案 3 :(得分:0)
您的数据库应该utf8
支持。尝试使用utf8_general_ci
或utf8_unicode_ci
答案 4 :(得分:0)
试试这个:
@mysql_query("set global character_set_results=utf8");
答案 5 :(得分:0)
尝试更改服务器以及数据库和表的排序规则
例如
ALTER DATABASE“ DBNAME”字符集utf8 COLLATE utf8_general_ci;
答案 6 :(得分:0)
以下对我有用:
LSTM 1
此外,您的表必须在结构字段中为(utf8_general_ci)。
答案 7 :(得分:-1)
现在PHP和MYSQL支持任何语言。在数据库连接中使用此功能。
$this->links = mysql_connect(DB_SERVER,DB_SERVER_USERNAME,DB_SERVER_PASSWORD);
mysql_query("SET character_set_results = 'utf8', character_set_client = 'utf8',
character_set_connection = 'utf8', character_set_database = 'utf8',
character_set_server = 'utf8'", $this->links);
MYSQL数据库表字段应为Collation = utf8_general_ci