This question already has answers here:
UTF-8 all the way through
                                
                                    (15个答案)
                                
                        
                                4年前关闭。
            
                    
我面临一些奇怪的问题。我的mysql表中存储了以下字符串:


  马匹是从山上带进来的,接下来被拴住了
  到一堆干燥的粪便。四周都是雪山峰
  一边躺着闪闪发光的冰川蓝色湖水。吉尔吉斯人
  决定谁会骑哪匹马。 Kanybek看着我,唯一的
  男子在我们的骑行派对上离开,骑行派对从10变薄
  种马到三只。我听说过Kanybek,
  该地区最好的ulak球员(那只马球上死了无头
  山羊,和阿富汗丛林动物(bushkazi)一样。
  
  肯尼贝克(Kanybek)是个可以从地面上掏10索姆钞票的人。
  全速奔跑,一个可以背翻筋斗的骏马。他
  出生在马的阴影下,骑马之前已经骑马
  从那以后喝了母马的牛奶我非常怀疑Kanybek是否
  可以开始理解我对骑马的胡扯。
  
  “这是给你的,”他说,风化的脸裂成了一张
  冠军咧嘴。 “这是最快的。”


当我从db检索到php时,它开始显示``代替''。以下是我在php中检索到的内容。


  马匹是从山上带进来的,接下来被拴住了
  到一堆干燥的粪便。四周都是雪山峰
  一边躺着闪闪发光的冰川蓝色湖水。吉尔吉斯人
  决定谁会骑哪匹马。 Kanybek看着我,唯一的
  男子在我们的骑行派对上离开,骑行派对从10变薄
  种马到三只。我听说过Kanybek,
  该地区最好的ulak球员(这是一个无头的死马球比赛
  山羊,和阿富汗丛林动物(bushkazi)一样。
  
  肯尼贝克(Kanybek)是个可以从地面上掏10索姆钞票的人。
  全速奔跑,一个可以背翻筋斗的骏马。他
  出生在马的阴影下,骑马之前已经骑马
  从此喝醉了的母马的牛奶。我非常怀疑Kanybek是否
  可以开始理解我对骑马的胡扯。
  
  ``这是给你的,''他说,风化的脸裂成了一张
  冠军咧嘴。 ``这是最快的。''


我尝试了许多组合的许多PHP函数,但最后我什么都没得到。

mb_convert_encoding(),
iconv('UTF-8','ISO-8859-1 // TRANSLIT',$ description),
htmlentities等。

这些都返回空字符串。

我已经设定

   <meta charset="utf-8">


我正在使用PDO检索数据,而我的数据库集合是utf-8。

基本上我正在阅读第三方rss feed,并通过cron将它们存储到我的数据库中。

感谢您的帮助。

最佳答案

这是一个相当广泛的问题。您需要确保所有内容(包括表单提交,PHP mysql / mysqli实例以及数据库本身)都已设置为正确使用UTF8。请参见UTF-8 all the way through

您可能需要将<meta charset="UTF-8">添加到HTML文档的<head>中,以使Web浏览器知道您正在直接显示UTF8内容。这将使您的Web浏览器能够显示UTF8内容。

如果那没有帮助,请尝试使用utf8_decode()

关于php - 从MySQL解码utf-8字符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29559948/

10-10 22:03