没辙了,不得不再发一个MYSQL乱码的问题了

Web、Mail、Ftp、DNS、Proxy、VPN、Samba、LDAP 等基础网络服务
回复
头像
moveon
帖子: 49
注册时间: 2008-05-13 22:34
来自: 青岛

没辙了,不得不再发一个MYSQL乱码的问题了

#1

帖子 moveon » 2009-11-04 22:12

系统:9.10
PHPMYADMIN版本:3.2.3

1.已经修改过配置文件:在终端输入命令 sudo gedit /etc/mysql/my.cnf在打开的文件中
找到[client]在下面加入
default-character-set=utf8
找到 [mysqld_safe]在下面加入
default-character-set=utf8
找到[mysqld]在下面加入
default-character-set=utf8
init_connect='SET NAMES utf8'
找到[mysql]在下面加入
default-character-set=utf8

2.在MYSQL命令行下,执行了set names utf8;

3。检查mysql字符集
命令 一:show variables like 'character%'; 出现

代码: 全选

mysql> show variables like 'character%'; 
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       | 
| character_set_connection | utf8                       | 
| character_set_database   | utf8                       | 
| character_set_filesystem | binary                     | 
| character_set_results    | utf8                       | 
| character_set_server     | utf8                       | 
| character_set_system     | utf8                       | 
| character_sets_dir       | /usr/share/mysql/charsets/ | 
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
命令二:show variables like "collation_%"; 出现

代码: 全选

mysql> show variables like "collation_%"; 
+----------------------+-----------------+
| Variable_name        | Value           |
+----------------------+-----------------+
| collation_connection | utf8_general_ci | 
| collation_database   | utf8_general_ci | 
| collation_server     | utf8_general_ci | 
+----------------------+-----------------+
3 rows in set (0.00 sec)

4.在PHP的代码中添加了mysql_query("set names utf-8");



按照上面这些操作,貌似不会出现乱码了,现在的问题如下:

浏览器使用UTF-8, 编辑的PHP文件保存编码UTF-8,mysql中数据库和表 ,整理使用utf8_unicode_ci,
当从网页中输入数据时,在MYSQL中显示的是乱码,当从mysql中把这些乱码改过来后,mysql显示正常,但网页显示又是一串?????



哪位知道的朋友给指导下吧,不胜感激!!!
自己活的只比鬼火亮那么一点点,却假装太阳去照亮别人!
头像
moveon
帖子: 49
注册时间: 2008-05-13 22:34
来自: 青岛

Re: 没辙了,不得不再发一个MYSQL乱码的问题了

#2

帖子 moveon » 2009-11-05 20:09

怎么这么多人看了都没有回复的啊,哎。。。
自己活的只比鬼火亮那么一点点,却假装太阳去照亮别人!
sanz
帖子: 1010
注册时间: 2006-09-29 5:11

Re: 没辙了,不得不再发一个MYSQL乱码的问题了

#3

帖子 sanz » 2009-11-07 11:15

.首先,确认一下你HTML的<meta>。
然后,建议在php中试验一下用iconv处理一下,找出来乱码是什么编码的,然后再根据这个线索去找原因。
BTW,顺便看了一下我的mysql配置(不记得自己改了几个了)
show variables like 'character%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
show variables like "collation_%";
+----------------------+-------------------+
| Variable_name | Value |
+----------------------+-------------------+
| collation_connection | latin1_swedish_ci |
| collation_database | latin1_swedish_ci |
| collation_server | latin1_swedish_ci |
+----------------------+-------------------+
Dell D620 -> Asus U44SG
Dapper->Edgy->Feisty->Gutsy->Hardy->Karmic->Lucid -> Oneric -> Precise->Trusty
Python+JS
头像
moveon
帖子: 49
注册时间: 2008-05-13 22:34
来自: 青岛

Re: 没辙了,不得不再发一个MYSQL乱码的问题了

#4

帖子 moveon » 2009-11-07 11:42

sanz 写了:.首先,确认一下你HTML的<meta>。
然后,建议在php中试验一下用iconv处理一下,找出来乱码是什么编码的,然后再根据这个线索去找原因。
BTW,顺便看了一下我的mysql配置(不记得自己改了几个了)
show variables like 'character%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
show variables like "collation_%";
+----------------------+-------------------+
| Variable_name | Value |
+----------------------+-------------------+
| collation_connection | latin1_swedish_ci |
| collation_database | latin1_swedish_ci |
| collation_server | latin1_swedish_ci |
+----------------------+-------------------+
var_dump(iconv_get_encoding('all'));

代码: 全选

array(3) { ["input_encoding"]=>  string(10) "ISO-8859-1" ["output_encoding"]=>  string(10) "ISO-8859-1" ["internal_encoding"]=>  string(10) "ISO-8859-1" } 
难道是这个问题?我没有单独设置ISO-8859-1啊,望解答。。
自己活的只比鬼火亮那么一点点,却假装太阳去照亮别人!
头像
oneleaf
论坛管理员
帖子: 10441
注册时间: 2005-03-27 0:06
系统: Ubuntu 12.04

Re: 没辙了,不得不再发一个MYSQL乱码的问题了

#5

帖子 oneleaf » 2009-11-07 11:50

也许是这里的问题,你删除指定的编码试试。
头像
moveon
帖子: 49
注册时间: 2008-05-13 22:34
来自: 青岛

Re: 没辙了,不得不再发一个MYSQL乱码的问题了

#6

帖子 moveon » 2009-11-07 12:23

oneleaf 写了:也许是这里的问题,你删除指定的编码试试。

代码: 全选

locate php.ini
/etc/php5/apache2/php.ini
/etc/php5/apache2/php.ini~
/etc/php5/cli/php.ini
/usr/share/doc/php5-common/examples/php.ini-dist
/usr/share/doc/php5-common/examples/php.ini-paranoid
/usr/share/doc/php5-common/examples/php.ini-recommended
/usr/share/php5/php.ini-dist
/usr/share/php5/php.ini-dist.cli
打开/etc/php5/apache2/php.ini找到含有ISO-8859-1的地方有三处

代码: 全选

; Specify client character set. 
; If empty or not set the client charset from freetds.comf is used
; This is only used when compiled with FreeTDS
;mssql.charset = "ISO-8859-1"


; PHP's built-in default is text/html
default_mimetype = "text/html"
;default_charset = "ISO-8859-1"

[iconv]
;iconv.input_encoding = ISO-8859-1
;iconv.internal_encoding = ISO-8859-1
;iconv.output_encoding = ISO-8859-1
这些不是注释掉的么?
自己活的只比鬼火亮那么一点点,却假装太阳去照亮别人!
头像
moveon
帖子: 49
注册时间: 2008-05-13 22:34
来自: 青岛

Re: 没辙了,不得不再发一个MYSQL乱码的问题了

#7

帖子 moveon » 2009-11-07 12:24

好像前面取到的ISO-8859-1不是在PHP.INI里面设置的?我不懂 请教下
自己活的只比鬼火亮那么一点点,却假装太阳去照亮别人!
头像
oneleaf
论坛管理员
帖子: 10441
注册时间: 2005-03-27 0:06
系统: Ubuntu 12.04

Re: 没辙了,不得不再发一个MYSQL乱码的问题了

#8

帖子 oneleaf » 2009-11-07 12:32

检查你php程序的代码
头像
moveon
帖子: 49
注册时间: 2008-05-13 22:34
来自: 青岛

Re: 没辙了,不得不再发一个MYSQL乱码的问题了

#9

帖子 moveon » 2009-11-07 12:40

oneleaf 写了:检查你php程序的代码
现在

代码: 全选

mysql> show variables like "collation_%";
+----------------------+-------------------+
| Variable_name        | Value             |
+----------------------+-------------------+
| collation_connection | utf8_general_ci   | 
| collation_database   | utf8_general_ci   | 
| collation_server     | latin1_swedish_ci | 
+----------------------+-------------------+
3 rows in set (0.00 sec)

mysql> show variables like 'character%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       | 
| character_set_connection | utf8                       | 
| character_set_database   | utf8                       | 
| character_set_filesystem | binary                     | 
| character_set_results    | utf8                       | 
| character_set_server     | latin1                     | 
| character_set_system     | utf8                       | 
| character_sets_dir       | /usr/share/mysql/charsets/ | 
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
PHP代码:

代码: 全选

<?php
	$DBHOST="127.0.0.1";
	$DBUSER="root";
	$DBPWD="root";
	$DBNAME="sample";
	mysql_connect($DBHOST,$DBUSER,$DBPWD);
	mysql_select_db($DBNAME);
	mysql_query("set name 'utf8'");
	$content=$_POST['content'];
	$sql="insert into test(content) ";
	$sql.="values('{$content}') ";
	mysql_query($sql);
	
?>
<html>
<head>
<meta http-equiv="content-Type" content="text/html; charset=utf-8">
</head>
<body>
<form action="insert.php" method="POST">
<table>
	<tr>
		<td>输入内容</td><td> <input type=text name="content"></td><td><input type=submit value=submit></td>
	</tr>
</table>

</form>

</body>
</html>

<?php
var_dump(iconv_get_encoding('all'));                      #此处显示了ISO-8859-1
?>
三楼那位说是用LATIN1,我改了my.cnf配置,只有一个变成了latin1,phpmyadmin是单独下载压缩包安装的,整理用utf8_unicode_ci,现在的问题是不是MYSQL检测时出来的那几个还是UTF-8,我已经头大了 哈哈
自己活的只比鬼火亮那么一点点,却假装太阳去照亮别人!
头像
moveon
帖子: 49
注册时间: 2008-05-13 22:34
来自: 青岛

Re: 没辙了,不得不再发一个MYSQL乱码的问题了

#10

帖子 moveon » 2009-11-07 12:46

实在不行,我把这个PHPMYADMIN卸载掉 从源里安装吧,各位告诉我 在MYSQL检测字符时 是用 全部的UTF-8还是latin1?
自己活的只比鬼火亮那么一点点,却假装太阳去照亮别人!
头像
oneleaf
论坛管理员
帖子: 10441
注册时间: 2005-03-27 0:06
系统: Ubuntu 12.04

Re: 没辙了,不得不再发一个MYSQL乱码的问题了

#11

帖子 oneleaf » 2009-11-07 13:20

检查 table test 的字符集
zzhui31
帖子: 40
注册时间: 2008-06-12 13:27

Re: 没辙了,不得不再发一个MYSQL乱码的问题了

#12

帖子 zzhui31 » 2009-11-12 12:52

应用服务器连接mysql的驱动是否需要设置字符集?
如果是tomcat则需要设置和数据库一样的字符集。
wenjianhn
帖子: 583
注册时间: 2008-10-15 10:49
来自: CS

Re: 没辙了,不得不再发一个MYSQL乱码的问题了

#13

帖子 wenjianhn » 2009-11-12 14:12

oneleaf 写了:检查 table test 的字符集
上次就是最后忘了改表的字符集,搞惨我了

代码: 全选

 _____________
< 呜呜buntu >
 -------------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||
回复