西班牙语字符未正确保存在数据库中

时间:2012-10-18 03:33:36

标签: php mysql database character-encoding simplepie

我正在浏览一些西班牙语博客并将其保存在数据库中。例如,单词:Diseño!,我可以在获取提要的脚本中正确地看到它,但是当它保存在数据库中时,它会像Diseñó!一样保存。我的数据库设置为utf8。我想我已经按照每个看起来像这样的问题,但没有什么能解决它。我已经将我的html中的字符集从utf8更改为iso-8859但仍然可以在html中正确地看到它,但是一旦它保存到数据库中就没有。有人有解决方案吗?谢谢!

3 个答案:

答案 0 :(得分:0)

猜测,该页面是“Diseño!”的来源。可能在iso-8859-1或windows-1252中编码,并且它存储在您的数据库中而没有任何转换。

如果是这种情况,您需要使用类似http://php.net/manual/en/function.mb-convert-encoding.php的内容将字符串从其编码转换为utf-8。

答案 1 :(得分:0)

您使用的是SimplePie_Cache_MySQL吗?它似乎有一个bug,它没有设置数据库连接的编码。这意味着即使数据已经在utf8中,连接也会以静默方式将数据从latin1(默认值)编码为utf8。

要解决此问题,请将encoding=utf8添加到SimplePie_Cache_MySQL.php中的连接参数。

您还有另一个问题:当您稍后读取数据库时,您没有将页面编码设置为utf-8。这意味着显示正确编码的数据。

更新:仔细看看,SimplePie_Cache_MySQL似乎没问题,问题必定在其他地方。

答案 2 :(得分:-1)

您应该在建立与DB的连接之前设置字符编码。

您可以使用:

mysql_set_charset( 'utf-8' );

您还可以查看this in php.net并按照推荐的链接获取mysqli或pdo等替代方案。

再见