【问题标题】:Funny characters appearing in place of the quotes [duplicate]有趣的字符出现在引号的位置[重复]
【发布时间】:2013-03-28 21:19:00
【问题描述】:

使用 PHP 和 MySQL。当我在数据库中保存一个字符串时,稍后检索它时,它会提取一些有趣的字符,而不是原始字符串中的双引号和单引号。其中一些有趣的字符是†用于双引号,’ 用于单引号,– 用于破折号。 htmlspecialchars()htmlentitiesaddslashes 似乎无法解决我的问题。请帮忙。

【问题讨论】:

  • 您的数据库使用什么排序规则?试试utf8_unicode_ciutf8_general_ci
  • stackoverflow.com/questions/2292004/…。这似乎是一个编码问题。
  • @Antony, utf8_general_ci
  • @GThuo 你用utf8打开MySQL连接了吗?喜欢SET NAMES utf8charset=utf-8。连接数据库时使用什么函数?
  • 我正在使用 PDO 准备好的语句..

标签: html mysql encoding double-quotes


【解决方案1】:

在这里我找到了utf8 tutoril,这有助于解决问题。

示例如下

<form action="demo_form.asp" accept-charset="ISO-8859-1">

【讨论】:

  • 试过了..没有成功。
【解决方案2】:

这样称呼:

header("Content-Type: text/html; charset=UTF-8");

还有必要删除你现在拥有的所有当前被误导的黑客(htmlspecialchars()htmlentitiesaddslashes,尤其是accept-charset="ISO-8859-1")。

推荐阅读,以便您了解为什么上述内容适用于您的情况:

了解这一点后,您应该会在数英里之外看到 UTF-8 被误解为 Windows-1252 和 Windows-1252 被误解为 UTF-8 的迹象。

查看标头调用是否正常工作:

【讨论】:

  • @Esailijia,那个页面上有这个 HTML 元标记:&lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8" /&gt; 它的目的和上面的调用一样吗?
  • 你是说我不应该使用上面的函数,即htmlspecialchars, htmlentitiesaddslashes
  • @GThuo 是的,如果您正在使用它们(htmlentities,addlashes 通常没有意义),那么charset=utf-8 无效。如果您使用的是 htmlentities,请确保将 UTF-8 作为编码传递。
  • @GThuo 不,标题有优先级。如果您的 Web 服务器当前正在发送带有 charset 属性的标头,则元标记无效。检查为您的页面发送的标题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-18
  • 2019-11-19
  • 2012-01-11
  • 1970-01-01
  • 1970-01-01
  • 2014-09-26
相关资源
最近更新 更多