微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

UTF-8,PHP和XML Mysql

我在解决这一问题时遇到了很多问题:

我有一个编码为latin1_swedish_ci的mysql数据库一个存储名称和地址的表.

我正在尝试输出UTF-8 XML文件,但是以下字符串有问题:

Otivägen,当我对文件进行vim处理时,它将作为Otivägen输出.也当打开它,即我得到

“在文本内容中发现一个无效字符.错误处理资源”

我有以下代码

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)

提前致谢!

解决方法:

我认为您所做的一切都正确,除了您的终端使用的是Latin-1.

ä的UTF-8序列为C3 A4,如果显示为Latin-1,则为¤.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐