2016-08-25 100 views
2

我试图在我的网站内显示非常特殊的字符(如),并将其存储到我的数据库中。 当我写这些特殊字符时,它们会显示一次,但是当我重新加载页面并且服务器从数据库获取字符串时,它会显示为“??????? ???????? ??????“ 我试图做很多事情来解决这个问题,但他们都没有工作。 这不是一个可视化的问题,因为头被设置正确:MySQL数据库存储问号而不是特殊字符

<meta charset="utf-8"> 

我曾尝试做:

  • 服务器的默认字符集设置为UTF-8。
  • 设置数据库/表/列崩溃和字符集来utf8mb4_unicode_ci
  • 更改连接字符串:
$db = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME); 

$db->query("SET character_set_results=utf8mb4"); 

mb_language('uni'); 

mb_internal_encoding('UTF-8'); 

$db->query("SET NAMES utf8mb4"); 

$db->set_charset('utf8mb4'); 

但没有这种事情的来龙去脉。 作为补充,我想(只是用于调试)在数据库中的文本字段来改变一个字符串,我得到了一个错误:

Warning: #1300 Invalid utf8 character string: 'F09D91'

Warning: #1366 Incorrect string value: '\xF0\x9D\x91\xBB\xF0\x9D...' for column 'text' at row 1

我试过真的每一个解决方案,我发现这里和outsite,但没有工作。 任何帮助,将不胜感激。

+2

该文件的编码本身呢? –

+0

我应该检查哪些文件? –

+0

所有这些。如果您不知道如何检查文件的编码,请获取代码编辑器,然后查看“编码”下的含义。 –

回答

3

正如评论中所述。

在很多情况下,你需要将所有在该行之前以下
$db->query("SET character_set_results=utf8mb4");的代码。

另外使用不同的文件编码也可以帮助。

以前我不得不这样做,很奇怪。它也可能是服务器的默认编码,可能在某处重写某个内容;我也有过这个问题。

另外,如果您在查询某个地方,如执行SELECT,UPDATE或INSERT,那么它是重要编码代码放置在查询之前,应该是这种情况。

+0

谢谢你,这个伎俩。 ü救了我失眠和时间浪费。 –

+0

@SimoneVenturas你是最受欢迎的Simone,我知道“那种感觉太好了,*欢呼声* –

+0

$ db-> query(”SET character_set_results = utf8mb4“);在那条线之前。 “那条线”?哪一行? – VishalParkash

相关问题