2012-06-29 35 views
4

我正在嘗試使用PHP和HTML表單將一些阿拉伯語言數據插入到MySQL中。當我將數據插入到MYSQL表中時,表字段表示數據爲مرحبا العالمPHP MYSQL以阿拉伯語言插入數據

但是當我使用PHP訪問相同的數據並將其顯示在我的網頁中時,它會顯示正確的數據。我使用:在我的網頁

http-equiv="Content-Type" content="text/html; charset=utf-8" 

meta標籤顯示阿拉伯語數據。我的問題是爲什麼我的數據如下所示:MySQL表中的مرحبا العالم,我該如何糾正它。

+0

可能重複http://stackoverflow.com/questions/11262561/php-mysql-json-and -arabic-language) – eggyal

+0

我發現這篇文章很有幫助:http://www.bluebox.net/news/2009/07/mysql_encoding/ –

回答

16

你要做兩者的如下:

  1. 確保您的數據庫編碼和排序規則是utf8_general_ci(對於字段本身,表以及數據庫)。
  2. 建立與數據庫的連接後立即發送兩個命令:

    mysql_query("SET NAMES utf8;"); 
    
    mysql_query("SET CHARACTER_SET utf8;"); 
    
0

您的數據庫應該支持utf8。與utf8_general_ciutf8_unicode_ci嘗試

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.... 
} 
0

試試這個:

@mysql_query("set global character_set_results=utf8"); 
1

你沒有提的是,你所使用的MySQL版本,使用5.0.7或更高版本,但如果按official PHP documentation

這是更改字符集的首選方法。不建議使用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瞭解更多信息。

-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數據庫表字段應該歸類= utf8_general_ci

[PHP的MySQL JSON和阿拉伯文](的