phpMyAdmin中的拉丁字符,带有UTF-8排序规则

时间:2010-06-04 19:41:07

标签: php encoding phpmyadmin collation 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中修复该数据,那么我的网站会错误地显示数据,并带有奇怪的符号 。

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

谢谢大家!

8 个答案:

答案 0 :(得分:9)

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

如果phpMyAdmin正常(即设置为UTF-8)并且数据仍然显示奇怪,那么使用UTF-8查看您的数据库连接是否也是如此?

mysql_query("SET NAMES utf8") 

(或者你用作数据库的任何东西) 如果不是,可能会有所帮助。

答案 1 :(得分:1)

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

我不熟悉该应用程序,但您可以强制浏览器将该页面读取为UTF-8(通常是View&gt; Encoding&gt; UTF-8)。

答案 2 :(得分:1)

对于Scuzzu的问题,有几种方法:

http://www.mysqlperformanceblog.com/2007/12/18/fixing-column-encoding-mess-in-mysql/

我还有八个不同任务的链接,但这个网站阻止我保存它们......

“作为垃圾邮件防范机制,新用户最多只能发布一个超链接”

答案 3 :(得分:1)

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

问题:在phpMyAdmin中正确显示字符,在HTML / PHP中显示错误。人物:â,等等

标题正常(utf8),phpmyadmin以正确的形式显示内容,但网站一直显示奇怪的问号字符(在黑钻石字符内)。

HTML code:

<!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,charset等。但是,黑色菱形中的问号似乎更具体到此问题/解决方案,在其他情况下是显示2-3个奇怪的字符而不是你想要的字符。

答案 4 :(得分:0)

执行mysql_query("SET names 'utf8';");后 您还需要转到mySQL并将排序规则定义为UTF-8! 这应该可以解决您的问题。 祝你好运!

答案 5 :(得分:0)

1-编辑文件:

  

my.ini(MsWindos)   
    my.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服务!

答案 6 :(得分:0)

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

只需在 mysql_connect行之后设置$con = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD) or die(mysql_error()); mysql_query("SET NAMES utf8");

ds <- luxTrans("D857.lux") #luxTrans the data
ds <- ds[ds[,1]>as.POSIXct("2013-06-24"),] # cut off the days when not active
ds$light <- log(ds$light) # log transform the data

答案 7 :(得分:0)

我遇到了同样的问题,终于找到了一种通过PHP函数mysqli_set_charset检查和更改排序规则的优雅方法。以下代码必须包含在$conn支票和$sql查询之间:

if (!mysqli_set_charset($conn, "utf8")) {
    printf("Error loading character set utf8: %s\n", mysqli_error($conn)); //optional row
    die();
}

我在这里找到了解决方案:http://php.net/manual/en/mysqli.set-charset.php