期待大家帮忙,牛X你就来,PHP插入mysql乱码,都设置了,还是不行

xoxyy 2011-02-24 02:55:52
PHP插入到mysql中的数据从终端到phpmyadmin浏览都是乱码,大家帮忙分析
环境:LAMP

1.mysql编码设置如下:

mysql> show variables like 'character_set_%';
+--------------------------+----------------------------+
| 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)

2. mysql 全局设置如下:
/etc/my.cnf

[client]
default-character-set='utf8'

[mysqld]
default-character-set='utf8'
3.PHP连接编码设置如下:


function db_connect()
{

$result=new mysqli('IP','db','user','passwd');
mysql_query("SET NAMES 'UTF8'");

4. PHP页面编码设置如下:

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

能设置的都设置了,为什么在phpmyadmin 与终端里浏览还是乱码!!!!!
PS: phpmyadmin 与终端里也设置了编码为UTF8

哪位朋友帮忙解决一下。成分感谢!

...全文
795 29 打赏 收藏 转发到动态 举报
写回复
用AI写文章
29 条回复
切换为时间正序
请发表友善的回复…
发表回复
床上等您 2011-03-24
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 life169 的回复:]

一: 所有的utf8都换成utf-8

二:mysql_query("SET NAMES 'UTF8'");改成:mysql_query("SET NAMES `UTF-8`");
注意标点符号,是反引号 不是单引号
[/Quote]
纠正:楼主的是正确的。 向mysql query 设置编码,utf8 非 utf-8;

主要的地方有几个,最好都统一编码

1,数据库的。
2,文件里的
3,mysql_query("SET NAMES `UTF-8`");
4,文件的内码(估计这个问题,你没有提到这个)
jumpheightway 2011-03-24
  • 打赏
  • 举报
回复
my.ini里面修改成gbk或是你想要的编码格式 重启数据库
set方法设置字符集不能用引号
很久没有搞了,已经搞忘记不清楚了
tottyandbaty 2011-03-23
  • 打赏
  • 举报
回复
如果phpmyadmin浏览都是乱码的话,你可以尝试将phpmyadmin的语言切换为英文的utf的试试,我曾经多次遇到这个情况
jlzan1314 2011-03-23
  • 打赏
  • 举报
回复
请改回来
jlzan1314 2011-03-23
  • 打赏
  • 举报
回复
mysql_query("SET NAMES 'UTF8'");改成:mysql_query("SET NAMES `UTF-8`"); 这个是错的mysql没有utf-8的编码,请改过来.
  • 打赏
  • 举报
回复
iconv
kaifadi 2011-03-02
  • 打赏
  • 举报
回复
在CMD里不值观,进PHPMYADMIN打开数据库看看你的结构怎么样的。

3者统一指的是文本代码(charset在代码头来设置),数据库编码(phpmyadmin里改),文件本身编码(记事本修改)都为UTF-8或者GBK,如果有一个不是,都必须用编码转换代码修正过来!正常还是推荐都使用UTF-8,这样连编码转换函数都可以丢弃了。
火柴没帽 2011-03-02
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 junchen168168 的回复:]

你建立的数据库的编码是utf8_general_ci吗?这种情况有可能你的数据库编码不对!
[/Quote]

有可能是这样的,如果新建的数据库编码是这个,那么有可能在添加新的字段的时候,有些varchar类型的字段编码不是utf8_general_ci,查看一下字段的编码,统一改成utf8_general_ci就可以了
xuzuning 2011-03-02
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 xoxyy 的回复:]
谢谢大家的帮助,我用的mysqli连接数据库,用 mysqli 的时候 mysql_query("SET NAMES 'UTF8'");不知道为什么没有起作用,用以下的没有问题了
$result=new mysqli('localhost','root','','db');
$result->query("set names 'utf8'");

麻烦朋友们解答一下 $result->qu……
[/Quote]
注意 用 mysqli 的时候 mysql_query("SET NAMES 'UTF8'");
你使用了两个函数集,自然也是在操作两个结果集
得不到正确的结果是正常的
AlburtHoffman 2011-03-01
  • 打赏
  • 举报
回复
mysql有两个编码,一是效验编码,一是存贮编码,你注意一下
Abin-2008 2011-03-01
  • 打赏
  • 举报
回复
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
然后再用 EditPlus 3另存为utf-8类型.

mysql连接那里:mysql_query('set names utf8');

igaojie 2011-03-01
  • 打赏
  • 举报
回复
这个问题难道众多英雄汉啊!
xoxyy 2011-03-01
  • 打赏
  • 举报
回复
谢谢大家的帮助,我用的mysqli连接数据库,用 mysqli 的时候 mysql_query("SET NAMES 'UTF8'");不知道为什么没有起作用,用以下的没有问题了
$result=new mysqli('localhost','root','','db');
$result->query("set names 'utf8'");

麻烦朋友们解答一下 $result->query("set names 'utf8'");与mysql_query("SET NAMES 'UTF8'");的区别

非常感激
静默飘闪 2011-03-01
  • 打赏
  • 举报
回复
基本上编码的问题楼上同志们都说到了。。
谱靠一哥 2011-02-24
  • 打赏
  • 举报
回复
你可以先用 select hex(field1) from yourtable 看一下二进制的值,以确认数据库里存的啥
LuciferStar 2011-02-24
  • 打赏
  • 举报
回复
页面是UTF-8
MYSQL里是UTF8
注意不要搞错。
另外,网页其实可以不设,只要程序的编码是UTF-8即可。
goosman 2011-02-24
  • 打赏
  • 举报
回复
mysql在设置utf8的时候, 使用"utf8", 页面上, 使用utf-8.

乱码的解决需要一步一步的调试/观察

首先, 查看你的页面编码, 在浏览器上看打开你的页面时浏览器使用的编码格式..
然后, 从$_POST, $_GET中打印你提交的数据, 检查前台向后台的传递过程中, 编码有没有出问题
然后, 在向数据库写入之前检查一下..
然后就是确定数据库的编码问题, 这个通常换个确认正确的客户端来向数据库写入, 看数据库的表现..
xoxyy 2011-02-24
  • 打赏
  • 举报
回复
mysql> show variables like 'character_set_%';
为什么两次显示的内容不一样? 这个是因为我把原来mysql的设置改回来后的编码设置情况,这样设置在linux的终端用命令行访问就是正常的。
我先试试你说的方法。
life169 2011-02-24
  • 打赏
  • 举报
回复
mysql> show variables like 'character_set_%';
为什么两次显示的内容不一样?

这样吧 还是用phpmyadmin 浏览,更换浏览器编码浏览,gbk/gb2312/utf-8/latin1等等,直到没有乱码为止,这样就可以知道用什么编码浏览是正常的。
xiaoc3 2011-02-24
  • 打赏
  • 举报
回复
这标题下得狠~~~~
加载更多回复(8)

20,359

社区成员

发帖
与我相关
我的任务
社区描述
“超文本预处理器”,是在服务器端执行的脚本语言,尤其适用于Web开发并可嵌入HTML中。PHP语法利用了C、Java和Perl,该语言的主要目标是允许web开发人员快速编写动态网页。
phpphpstorm 技术论坛(原bbs)
社区管理员
  • 开源资源社区
  • phpstory
  • xuzuning
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧