PHP MYSQL以阿拉伯语插入数据

时间:2012-06-29 13:46:29

标签: php mysql arabic

我正在尝试使用PHP和HTML表单将一些阿拉伯语言数据插入MySQL。当我将数据插入MYSQL表时,表字段将数据表示为مرحبا العالم

但是当我使用PHP访问相同数据并在我的网页中显示它时,它会显示正确的数据。我正在使用:

http-equiv="Content-Type" content="text/html; charset=utf-8" 
我的网页中的

meta标记用于显示阿拉伯数据。我的问题是为什么我的数据看起来像这样:MySQL表中的مرحبا العالم,我应该如何纠正它。

8 个答案:

答案 0 :(得分:18)

您必须执行以下两项操作:

  1. 确保您的数据库编码和归类是utf8_general_ci(对于字段本身和表以及数据库)。
  2. 在建立与数据库的连接后立即发送两个命令:

    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); 
?>

其他注意事项:

  • 正在使用的文件应使用UTF-8
  • 进行编码
  • 数据库,表格和字段都应编码并使用排序规则utf8_general_ci
  • PHP标头和HTML标头也应设置为UTF-8

作为附注,不鼓励使用mysql_query扩展名。相反,应使用MySQLiPDO_MySQL扩展名。

有关详细信息,另请参阅MySQL: choosing an API指南和related FAQ

答案 3 :(得分:0)

您的数据库应该utf8支持。尝试使用utf8_general_ciutf8_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数据库表字段应为Collat​​ion = utf8_general_ci