PHP/MySQL 特殊字符无法正确显示


PHP/MySQL Special Characters aren't displayed properly

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

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

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

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

这没有用。

希望您拥有所有信息来帮助我,如果不是说:)提前感谢!

米兰

你需要用 utf-8 格式包含所有内容:

  • 数据库字段
  • 数据库连接(在经典的mysql中mysql_set_charset('utf8');,类似于PDO中的$db->exec('SET CHARACTER SET utf8');
  • 内容类型(就像您已经拥有的那样)

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

  • 源文件编码
  • 表列排序规则
  • 网页编码(PHP header('Content-Type: text/html; charset=utf-8');<header> <meta name="Content-Type" value="text/html; charset=utf-8" />

我通常格式化所有输入文本str_replace将所有不常见的符号替换为它们的 &#xxx; 等效符号,这实际上有助于防止注入和不良的 html 渲染

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