2012-03-21 16 views
0

我從使用PHP獲取名稱列表的mysql數據庫生成XML。現在一些標籤不能正確地((دار الخير)) هي مؤسسة خيرية في الاحساء .. تستق�正在xml數據中產生xml-parsher問題,然後我將輸出更改爲utf8編碼,例如🌴🌴((دار الخير)) 🌴🌴 هي مؤسسة خيرية ÙÙŠ الاحساء .. تستقØ在xml中處理不同的字符集

我試着用

header ("content-type: text/xml; charset=utf-8"); 

以及

mysql_query('SET character_set_results=utf8'); 

但是沒有人給我提供精確的結果集。我試圖改變編碼,但它不工作。有什麼辦法可以得到正確的文字嗎?

+0

什麼是表格整理('show create table')?什麼是原始文本的編碼(如果這是從網頁表單輸入,那麼它應該是網站編碼)? – 2012-03-21 09:45:09

+0

其'latin1_swedish_ci'。 – Sumant 2012-03-21 10:50:40

回答

0

答案改基礎上的意見

好像你有一些UTF8已經THA數據這UTF8數據存儲在MySQL LATIN1領域爲二進制。

證明:

select convert(binary convert ('دار الخير' using utf8) using latin1) 
,(convert (binary convert('دار الخير' using latin1)using utf8)) 

,如果你將有隻有在UTF8數據:

mysql_query('SET names latin1'); // this is probably arlready the default 

你只需要XML頭設置爲UTF-8:

<?xml version="1.0" encoding="UTF-8" ?> 

也,即時通訊不知道如果PHP頭是必要的:

header ("content-type: text/xml; charset=utf-8"); 

在你的情況我不知道,如果你有UTF8字符集與其他字符集的混合,但我的XML編輯器處理該文本行(即不給一個錯誤),它被視爲UTF8。

,如果你有混合字符集,那麼它的屁股痛。

歡呼聲。

+0

它不工作我試着用'header(「content-type:text/xml; charset = utf-8」); '和'mysql_query('SET character_set_results = utf8'); mysql_query('SET names = utf8'); mysql_query('SET character_set_client = utf8'); mysql_query('SET character_set_connection = utf8'); mysql_query('SET collat​​ion_connection = utf8_general_ci'); '我得到同樣的結果。 – Sumant 2012-03-21 08:21:40

+0

已更新的答案。 – 2012-03-23 13:38:21