将rss数据存储到mysql表时,Charset会出现问题

时间:2011-11-30 01:53:06

标签: php mysql utf-8 character-encoding rss

目前我正在使用simplexml_load_file();

阅读可能以任何字符类型编码的RSS Feed

然后在php中循环这些feed,并将一些部分插入到一个utf8的mysql数据库中,所有表格都是utf8。

当插入表格后,我可以看到'已替换为’并且 - 已替换为–

当从表格中选择并在php文件中显示时,会显示这些奇怪的字符。

我在插入时尝试过utf8_decode和utf8_encode并从数据库中选择,但这没有用,我做错了什么?

3 个答案:

答案 0 :(得分:0)

在您输入数据的db表上设置的charset和default collat​​ion是什么?

<强> [编辑]

在此处找到:http://www.php.net/manual/en/function.simplexml-load-file.php#92969

  

neil art neilanddeb dort com 17-Aug-2009 01:00
  因为我的XML文件的编码是UTF-8和   我的网页编码是iso-8859-1我得到了一些奇怪的字符,例如“而不是正确的单引号”。

     

这个解决方案很难找到,但很容易实现。

     

http://uk3.php.net/manual/en/function.iconv.php

     

使用iconv()函数,您可以从一个编码转换为另一个编码,TRANSLIT选项似乎最适合我需要的。这是我的例子:

<?php
// convert string from utf-8 to iso8859-1
$horoscope = iconv( "UTF-8", "ISO-8859-1//TRANSLIT", $horoscope );
?>
     

我在这个页面找到了解决方案......
  http://coding.derkeiler.com/Archive/PHP/comp.lang.php/2008-04/msg00365.html
  希望这有帮助

答案 1 :(得分:0)

在插入之前添加mysql_query('SET CHARACTER SET utf8');并选择查询

答案 2 :(得分:0)

$xml = file_get_contents($file);
$xml = iconv("UTF-8", "UTF-8//IGNORE", $xml);
simplexml_load_string($xml);