1

可能重复:
PHP / MySQL 中的特殊字符

我有个问题。我的数据库(MySQL 5.5.20)中有一段文本,其中包含 'é' 和“'”等字符,在执行 MySQL 查询并使用 echo($...) 显示后,这些字符无法正确显示。对于我在数据库中输入的每个特殊字符,它会在菱形内显示一个小问号。如果我查看数据库本身中的文本,它是一个 'é' 和 "'",所以我认为问题不在于 MySQL。

我可以做的一件事是 str_replace 输入时像 " ' " --> "'" 这样的所有内容,但是我必须对每个字符都这样做。哦,我已经包括了

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

这没有用。

希望你有所有的信息来帮助我,如果不只是说:) 提前谢谢!

米兰

4

3 回答 3

5

您需要在 utf-8 中包含所有内容:

  • 数据库字段
  • 数据库连接(mysql_set_charset('utf8');在经典 mysql 中,类似于$db->exec('SET CHARACTER SET utf8');PDO)
  • 内容类型(就像您已经拥有的一样)
于 2012-05-03T15:38:08.307 回答
0

SET NAMES utf8在成功连接到数据库多年后,我正在使用 SQL 查询。但是,当您将所有内容都使用相同的编码时,这不是必需的

  • 源文件编码
  • 表列排序规则
  • 网页编码(在 PHPheader('Content-Type: text/html; charset=utf-8');和 中<header> <meta name="Content-Type" value="text/html; charset=utf-8" />
于 2012-05-03T15:50:40.447 回答
0

我通常用 str_replace 格式化所有输入文本,并用 &#xxx; 替换所有不常见的符号。等价的,这对于防止注入和糟糕的 html 渲染实际上很有用

即,如果有人输入 html 标签,他们将在您的页面中处于活动状态,依此类推。

于 2012-05-03T15:53:09.367 回答