PHP / MySQL特殊字符未正确显示

时间:2012-05-03 15:35:46

标签: php mysql text

  

可能重复:
  Special characters in PHP / MySQL

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

我能做的一件事是str_replace所有的东西,比如“'” - > “'”在输入时,但是我必须为每个角色执行此操作。 哦,我已经包括

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

这不起作用。

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

Milaan

3 个答案:

答案 0 :(得分:4)

你需要拥有utf-8中的所有内容:

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

答案 1 :(得分:0)

在与DB的连接成功完成多年后,我正在使用SQL查询SET NAMES utf8。 但是当你拥有相同编码的所有东西时,这不是必要的

  • 源文件编码
  • table columns collat​​ions
  • 网页编码(包括PHP header('Content-Type: text/html; charset=utf-8');<header> <meta name="Content-Type" value="text/html; charset=utf-8" />

答案 2 :(得分:0)

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

即。如果有人输入了html标签,他们将在你的页面中处于活动状态,等等。