我有很大的問題,這個解決一個:UTF-8,PHP和XML Mysql的
我有一個MySQL數據庫編碼latin1_swedish_ci和存儲姓名和地址的表。
我試圖輸出UTF-8的XML文件,但我有以下字符串的問題:
Otivägen
當我使用VIM文件,它被輸出爲Otivägen
。此外,當它打開IE瀏覽器,我得到
「An invalid character was found in text content. Error processing resource
」
我有以下代碼:
function fixEncoding($in_str)
{
$cur_encoding = mb_detect_encoding($in_str) ;
if($cur_encoding == "UTF-8" && mb_check_encoding($in_str,"UTF-8"))
return $in_str;
else
return utf8_encode($in_str);
}
header("Content-type: text/plain;charset=utf-8");
$mystring = "Otivägen" // this is actually obtained from database;
$myxml = "<myxml>
....
<node>".$mystring."</node>
....
</myxml>
";
$myxml = fixEncoding($myxml);
實際的XML輸出低於:
<?xml version="1.0" encoding="UTF-8" ?>
<myxml>
....
<node>Otivägen</node>
....
</myxml>
任何想法如何,我可以輸出文件,所以在vim文件讀取Otivägen
而不是Otivägen
?
編輯:
我做mysql_client_encoding()
,並得到latin1
然後我做了mysql_set_charset()
並再次運行mysql_client_encoding()
,得到了UTF8,但仍然是相同的輸出問題。
編輯2
我已經登錄到命令行,並提前運行查詢SELECT address1 FROM address WHERE id = 1000;
SELECT address1 FROM address WHERE id = 1000;
Current database: ftpuser_db
+-------------+
| address1 |
+-------------+
| Otivägen 32 |
+-------------+
1 row in set (0.06 sec)
謝謝!
我做了mysql_client_encoding()並得到了latin1,然後我做了mysql_set_charset(),然後再次運行mysql_client_encoding()並獲得了utf8,但仍然是同樣的問題。 – Lizard
您是否曾嘗試在每個'$ myString'上分別應用'fixEncoding()',而不是在整個'$ myXml'上應用一次? – Wookai
是我試過'$ mystring'但是這並沒有改變任何東西 – Lizard