我在解决这个问题上有很大的困难:
我有一个编码latin1_swedish_ci的mysql数据库和一个存储名称和地址的表。
我正在尝试输出一个UTF-8 XML文件,但是下面的字符串有问题:
Otivägen --当我访问该文件时,它被输出为Otivägen。也是当我打开它的时候我得到了
"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)提前感谢!
发布于 2009-11-24 16:11:31
您的MySQL连接编码是否正确地设置为UTF-8?
有关更多细节,请查看字符集()和编码()。
https://stackoverflow.com/questions/1791082
复制相似问题