2010-06-04 60 views
4

我的网站使用:拉丁字符使用UTF-8排序

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 

而这个元:

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

我创造了我在phpMyAdmin确保一切数据库和表设置为utf8_unicode_ci(表,字段,数据库),甚至连接归类。

当我使用PHP制作的标准表单插入一些拉丁字符(重音,ñ和类似的东西)到数据库中时,它工作正常,我可以在我的网站上显示保存的数据没有问题。但是,如果我去phpMyAdmin,所有的拉丁字符都搞砸了,像嗯嗯。

如果我尝试修复phpMyAdmin中的数据,那么我的网站会错误地显示数据,并带有奇怪的符号 。

这个世界上我做错了什么?我一直在努力工作几个小时没有成功。

谢谢大家!

回答

9

正如@Artefacto所说,这可能是phpMyAdmin的本地问题。

如果phpMyAdmin很好(即设置为UTF-8)并且数据仍然显示出奇怪,那么看看你的数据库连接是否也使用了UTF-8?

mysql_query("SET NAMES utf8") 

(或任何你作为一个数据库库使用) 可能有帮助,如果它不是。

+0

是啊,我跑了查询,但一切都保持相同的:

mysql_connect行刚刚成立mysql_query("SET NAMES utf8");。 – 2010-06-04 20:27:22

+0

佩卡我这样做是错的。所以,只要我实例化我的MySQL类,我添加了一个新行来在每个页面上运行该查询,现在一切正常。现在,又出现了另一个问题:是否可以设置某种默认值,所以我不需要一直运行SET NAMES? – 2010-06-05 22:12:36

+0

这是解决方案。非常感谢! – 2014-10-12 22:17:08

1

如果phpMyAdmin显示的是ñññ而不是ñññ,那是因为它将UTF-8字节流解释为ISO-8859-1。所以你的数据库内容可能是正确的,phpMyAdmin只是以错误的方式显示它们。

我对应用程序并不熟悉,但您可以强制浏览器以UTF-8(通常是View> Encoding> UTF-8)读取页面。

+0

好点,@OP先检查一下。 – 2010-06-04 19:51:48

+0

我尝试将Google Chrome和Firefox编码更改为UTF-8,但无效。 phpMyAdmin仍然显示奇怪的符号(是的,我重新启动了浏览器)。 – 2010-06-04 20:24:51

+0

@Danny这是一个关于phpMyAdmin首页的设置(“语言”设置,你可以在那里选择语言和编码。) – 2010-06-04 20:31:29

0

做完之后mysql_query("SET names 'utf8';"); 您还需要去mySQL并将排序规则定义为UTF-8,a LSO! 这应该可以解决你的问题。 祝你好运!

0

1 - 编辑文件:

的my.ini(MsWindos)
我。CNF(GNU/Linux)的

2 - 查找的[mysqld]条目和追加:

character-set-server = utf8 
    skip-character-set-client-handshake 

整个视图应该是这样的:

[mysqld] 
    port=3306 
    character-set-server = utf8 
    skip-character-set-client-handshake 

3-重启MySQL服务!

1

mysql_query(“SET NAMES utf8”)解决了我的问题。

问题:在phpMyAdmin中正确显示的字符在HTML/PHP中是错误的。字符:“等”

标题正常(utf8),phpmyadmin以正确的形式显示内容,但网站不断显示奇怪的问号字符(黑色菱形字符内)。

HTML代码:

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

解决方案:我在PHP中加入(任何其他查询之前):

mysql_query("SET NAMES utf8");

其他原因可导致此行为;这只是解决方案的一部分。您可能需要检查内容类型,Web服务器配置(httpd.conf),html lang/dir,字符集等。但是,黑色钻石中的问号似乎对此问题/解决方案更具体,在其他情况下显示2-3怪异的字符,而不是你想要的。

0

如果phpMyAdmin没问题(即设置为UTF-8),并且数据仍然显示出奇怪的现象,那么看看您的数据库连接是否也使用UTF-8?

$con = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD) or die(mysql_error()); 
    mysql_query("SET NAMES utf8"); 
+0

这已在接受的答案中说明。 – 2015-07-20 08:32:02

+0

是的;但不包含指挥地点。 – 2015-07-20 17:45:13