2013-07-27 79 views
2

我有一個MySQL數據庫備份。而這個備份整理是UTF8,通用詞。這是從技術的備份。轉換特殊字符從數據庫到普通字符

下面是從數據庫中的文章的句子:

貿易中心是一個 müthiþ平臺,讓你做你的交易。用互聯網與提供該貿易商 交易平臺olanaðý不巴迪亞。出於某種原因無法自行 網站,交易商可能會引入自己的產品,仍然能夠有很多商販在這裏聊天 。

通過這個系統將建立經銷商和客戶 貿易之間的結合將更加kolaylaþ。

我的HTML代碼就是這樣

<html lang="tr"> 
<head> 
<meta charset="utf8"> 
</head> 
</html> 

如果我不使用LANG = 'EN' 和charset = 「UTF-8」。我的信息變成這個

貿易中心是一個 您的交易平臺yapmanã½zã½管理員落雁mã¼thiã¾。他們不是tã¼cc咩°½ Windows XP平臺,在這個olanaã°½°lanmã½ã¾tã½管理員互聯網來做生意。他們tã¼cc dolayã½自己的ã¼rã¼n該網站可能在這裏無法bazã½ tanã½t,仍然能夠在這裏聊天是çOktã¼cc原因。由於這一系統

arasã½n建立一個çOksatã½cã½和mã¼ã¾ter貿易將更加kolaylaã¾咩°。

但LANG = 'EN' 和charset = 「UTF-8」 未進行轉換的一切。

其實,我有這個問題,沒有問題。但是,這文章一樣,保存到數據庫中。如何轉換THES

的人物?我不想使用str_replace函數。

光=> I,D => G,TH =>工作等

我的數據庫連接部分

public function __construct() { 
    $this->db_connection = mysql_connect($this->_server, $this->_dbuser, $this->_dbpassword) OR die ("Veritabanı Sunucusuna Bağlanılamadı!" . mysql_error()); 
    mysql_query('SET NAMES utf8'); 
    mysql_query('SET CHARACTER_SET utf8'); 
    mysql_query("SET COLLATION_CONNECTION = 'utf-8'"); 

    mysql_select_db($this->_db) or die("Veritabanı Bulunamadı" . mysql_error()); 
} 
+0

你在尋找衛生處理嗎? 'htmlentities()'? – Nick

+0

當您保存數據時,您的數據庫連接需要使用'SET NAMES'utf-8'',我相信 – DevZer0

+0

我添加了數據庫連接部分。我已經使用集名 – cihanblog

回答

0

正如我已經做了很多與「非İngilizce」字,都需要適當顯示這些字符的存儲幾件事情。

沒有特定的順序(因爲我不知道什麼字符集是最適合于波斯,我將使用UTF-8,如果是不同的,你只需要使用一個你需要的):

告訴你瀏覽器:您所使用的字符集,通過設置從PHP header('Content-type: text/html; charset=utf-8');他設定的meta標籤在HTML像這樣適當的標題:<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

在數據庫中,以避免列/表中混合使用不同的排序規則和字符集。我總是將數據庫,表格和列設置爲utf8_general_ci,這符合我需要的所有時間(語言,如英語,德語,塞爾維亞語,匈牙利語......)。

正如Jan所說,閱讀http://dev.mysql.com/doc/refman/5.0/en/charset-connection.html在連接到數據庫後,您很可能需要執行類似SET NAMES utf8的查詢。

所有這些都應確保正確顯示unicode字符。但是,還有一件事可以覆蓋所有這些 - Web服務器。 Apache(不知道其他服務器)有一個AddDefaultCharset指令。在大多數設置中,這保留爲關,但我確實遇到了默認字符集設置爲latin1的設置,因此覆蓋了我所有的字符集設置。如果設置了該值,則將其設置在httpd.conf(或類似的配置文件)中。如果您有權訪問它,我建議將其設置爲關閉。如果你不這樣做,那麼你可以使用放在你的webroot中的.htaccess替代全局值,如下所示:AddDefaultCharset utf-8

+0

沒有任何改變。因爲這個數據被保存到數據庫中,當我查詢phpmyadmin時,我可以看到這些字符,但是當我打開vbulletin論壇時。一切正常。有轉換。但我不知道我該怎麼做? – cihanblog

1

我遇到過這樣的問題。我認爲首先你需要確保你用來查看從數據庫中提取的文章的控制檯或編輯器使用'utf-8'格式。我的意思是這個問題可能由控制檯造成,而不是由數據庫本身造成。

+0

+1非常好點 – DevZer0

+0

+2非常好點... –

+0

我知道這個話題。我已經檢查過了。 「file -i index.php index.php:text/x-C++; charset = utf-8」 – cihanblog