2011-05-12 91 views
0

如何正确处理输出,因为我有一个像 这些电子字符,A,U,Y但...当我查询它显示了这个角色如何纠正的特殊字符输出存储在MySQL

我已经做了我的功课(研究)

我定的meta标签

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

,并添加的mysql_query( “集名称 'UTF8'”);在mysql连接之后。

任何人都可以提出解决方案吗?请 谢谢

- 编辑 -

我只是创建一个基本的SELECT查询使用PHP和MySQL

我已经设置了整理到列林“utf8_general_ci”查询

+0

您需要添加更多的细节。你在哪里使用什么来查询什么? – 2011-05-12 12:16:42

+0

直接在数据库中查看时字符是否正确显示? – 2011-05-12 12:36:22

+0

@wesley是它显示正确,但是当输出它显示这个奇怪的字符 – arnold 2011-05-12 12:44:12

回答

2

检查您的表格编码和客户端编码。这些都一样吗?

+0

嘿,我该如何检查我的表编码? – arnold 2011-05-12 12:51:49

+0

我假设你使用phpmyadmin?只需转到桌面,看看'结构'。然后在字段中查看“整理”。 – 2011-05-12 12:57:12

1

运行后SET NAMES数据出现乱码后不会有太大的区别。我最近有同样的问题。我通过以下步骤修复了它:

  1. 将所有内容加载到一个带有窗体的UTF8页面中。 (这是一个没有SET NAMES
  2. 增加SET NAMES到调回所有数据的连接
  3. 并将其保存为UTF8

当你加载页面的第一次不SET NAMES应该正确显示。如果在表单中显示不正确,那意味着您可能忘记在页面上设置编码。

这是假设你所有的表都有适当的排序/编码。

+0

你知道什么是正确的编码/整理吗? – arnold 2011-05-12 12:28:54

+0

@arnold'utf8_general_ci'应该为你工作 – JohnP 2011-05-12 12:30:55

+1

另外请注意,不要使用'SET NAMES'。而是使用'mysql_set_charset','mysqli :: set_charset'或PDO的字符集DSN参数(> = 5.3.6)。否则,转义可能无法100%正确工作... – ircmaxell 2011-05-12 12:45:39

0

尝试把这个线在你的PHP文件的顶部:

header('Content-Type: text/html; charset=utf-8'); 
1

确定的排序规则正确设置为数据库中的所有表的100%?你可以试试像 Phoca Changing Collation这样的工具来将你的整个数据库转换为utf8_general_ci。

这可能会损坏您当前的数据,因此请务必在运行之前进行适当的备份。