我原来PHP4、APACHE1.3、MYSQL4.0、PHPMYADMIN2.6.2,昨天升级PHP5.2、APACHE2.0、MYSQL5.1、PHPMYADMIN3.1.1,数据在PHPMYADMIN2.6.2导出后导入3.1.1,在PHPMYADMIN下能看到正常显示的汉字,之前2.6.2就选的是简体中文UTF8的,3.1.1倒是只有简体中文一个选项。
发现我的程序读出来的全部变成了???,我的HTM页面设的是UTF8没有改动过。
昨天下午临下班突然都正常了,我的程序看到了正常的汉字,PHPMYADMIN也正常。
但是今天早上一开本子休眠模式的恢复过来,结果我的程序里有变???了,无奈通过我的程序写入汉字,发现我的程序那刚写入的正常显示,但PHPMYADMIN中却变:kkk1kadfä¸æ–‡,究竟哪里有问题呢?
发现我的程序读出来的全部变成了???,我的HTM页面设的是UTF8没有改动过。
昨天下午临下班突然都正常了,我的程序看到了正常的汉字,PHPMYADMIN也正常。
但是今天早上一开本子休眠模式的恢复过来,结果我的程序里有变???了,无奈通过我的程序写入汉字,发现我的程序那刚写入的正常显示,但PHPMYADMIN中却变:kkk1kadfä¸æ–‡,究竟哪里有问题呢?
解决方案 »
- 生成静态页问题
- 求职兼职oscommerce,creloaded修改及二次开发
- 二维数组的合并,在线等
- mysql updata问题请教
- 怎么得到百度或者google.com搜索后点击过来的关健字?
- 请教 php session 2个问题
- 大量操作数据库,造成页面停止运行
- 这些PHP代码,和JavaScript做某种结合后,网页不能正确显示的问题
- php网页出现Error FW-1 at NOKIA-IP350-4: Access denied 这是怎么回事啊?
- 怎么样用php做一个软件下载系统吗?
- GB2312转用UTF8编码后数据库的链接以及SQL语句都失效?为什么?
- 关于file_get_contents()伪装的问题!
很神奇。
你的数据库字符集是什么?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 | D:\MySQL\MySQL Server 5.1\share\charsets\ |
+--------------------------+-------------------------------------------+
发现我的程序读出来的全部变成了???,我的HTM页面设的是UTF8没有改动过。当你用程序读取时,程序中,必须在连接数据后操作后,首先执行“set names utf8”的query操作。(不知道你是否执行了)2。
无奈通过我的程序写入汉字,发现我的程序那刚写入的正常显示,但PHPMYADMIN中却变:kkk1kadfä¸æ–‡,究竟哪里有问题呢?
这个很容易出错的。
首先你仍然要执行上面的“set names utf8”操作。因为你通过程序写入汉字,这涉及到你程序中的汉字来源(是在程序中定义的字符串中的汉字,还是来自另一个硬盘上的文件),而且还和你使用的程序编辑器的编辑窗口的编码有关。
简单说,如果你是在中文系统下,如果你在程序里定义了一个汉字字符串,那么写入数据库前,要做编码转换,从gb2312转换为utf8再写入。
我已经设了这个解决了,但是难道我在页面里
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
这个下面输入和显示出来的汉字还必须如此?
但是昨天下午自己突然正常了又怎么解释呢?
出现乱码很正常你要注意几点,必须严格遵守.
1 phpadmin首页有mysql连接的编码.
2 建库的时候有编码指定
3 建表的时候有编码指定.
但是这样程序移植性很差。但是昨天下午自己突然正常了又怎么解释呢? 确实很有意思,可能大家没谁能解释清楚,也许你运行前,环境变量被什么改变也说不定。除了字符集,还有校正连接的原因,所以即使<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> ,还是一般情况还是必须set names utf8