重大发现!!!在线等

该昵称很风骚 2009-08-26 11:10:34
今天早上上传新闻,开始的时候,上传了好几篇,没问题,忽然有一篇,有问题,上传之后,文章始终只能显示一部分,然而其他新闻都没问题的

找啊找啊,发现新闻中有一个生字“垟”,凡是这个字以后的内容,全无法显示,而是这个字以后的文本,压根儿没存进数据库(也包括这个字),难怪标题始终都是空的(因为标题的第一个字就这个字)

我不相信这是真的,我又将这个字在其他模块下写入数据库,仍然无法写入

在用insert插入前,我用echo输出了,没问题,能输出这个字,

很郁闷,大家试试看,你们能不能把“垟”字写入数据库

在线等
...全文
108 点赞 收藏 13
写回复
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
foolbirdflyfirst 2009-08-27
编码问题是老生常谈了,其实不统一编码也行,只要你的php与mysql交互时,告诉数据正确的编码,mysql会进行转换的。
//关键在这里
mysql_query("set names gbk");
//可拆分为3句
mysql_query("set character_set_client=gbk");//告诉数据库,传入语句的客户端数据使用的是gbk编码,这样mysql那边就可以相应的正确转换编码,比如你的'垟'字,gb2312是没有编码的,你如果通知mysql,你用的是gb2312编码,mysql碰到这个gb2312里没有编码的汉字,它到下一步就不知道怎么转了,而gbk里是有这个字的编码的,gbk是gb2312编码的兼容扩展版,放心用吧。
mysql_query("set character_set_connection=gbk");//在与表的交互过程中,仍然要根据表的collation_charset进行比较,比如你的是utf-8编码,则需要再次转码,将gbk->utf8,然后才进行insert操作。如果你的库是utf8编码,这里直接set character_set_connection=utf8也是可以的。
mysql_query("set character_set_results=gbk");//查询到的数据,转成gbk编码返回。insert/update语句可以不理这个
//执行insert
mysql_query("insert into ...");
回复
我将连接数据库的编码改成gbk,还有将某个数据库的字段编码也改成gbk,问题就解决了

但是,一定要编码一致才行。
mysql中有好几个地方都要关系到编码,建立库的时候、建立表的时候、建立字段的时候都需要编码,头都大了。
如果我将数据库编码全改成gbk,那事儿可就大了,因为在php代码中,很多地方我用了iconv函数,而这个函数的第二个参数我写的是gb2312.

gbk的范围比gb2312大是吧,但是我看好多源码的数据库,不是utf8就是gb2312的,很少用到gbk的
回复
我刚试过,把“垟”字直接通过phpmyadmin写入,提交之后,看到的是一个问号
应该是属于编码的问题
但是,其他字却不会,难道是mysql的一个bug
我的数据库是不能改成utf8的,因为整个网站都用的gb2312,如果改了,整个网站都是乱码了
回复
清风闲客 2009-08-27
我也遇到过这种问题,与数据库的编码有关系,把数据库编码改为utf-8的就OK了,
这两个字体也是(“瑄”,“琍”),都出现楼主类似的情况。
回复
ms_X0828 2009-08-27
在我的 mysql中是好的

在写代码的时候,编码 和数据库中的编码 不一样,有转换一下吧
回复
foolbirdflyfirst 2009-08-26
gb2312?gb2312可没有'垟'这个字的编码。
那你提交过来的数据是什么编码?插入之前有没有做mysql_query("set names 编码")的操作?
回复
数据库编码是gb2312的

不可能这个“垟”字单独的是utf-8吧?
回复
foolbirdflyfirst 2009-08-26
你数据库是什么编码?你做insert语句的时候,'垟'这个字又是什么编码?
回复
itian 2009-08-26
嘎子 = 噶子
回复
wzwen 2009-08-26
和编码有关?
回复
blueforyou 2009-08-26
用gbk编码试试,这个是繁体字?不清楚~
回复
heblys 2009-08-26
应该是编码的问题.
回复
阿_布 2009-08-26

mysql> insert into a values('垟');
Query OK, 1 row affected (0.03 sec)

mysql> select * from a;
+------+
| font |
+------+
| 垟 |
+------+
1 row in set (0.00 sec)
mysql> show variables like 'character_set_%';
+--------------------------+-------------------------------+
| Variable_name | Value |
+--------------------------+-------------------------------+
| character_set_client | gbk |
| character_set_connection | gbk |
| character_set_database | gbk |
| character_set_filesystem | binary |
| character_set_results | gbk |
| character_set_server | gbk |
| character_set_system | utf8 |
| character_sets_dir | d:\wamp\mysql\share\charsets\ |
+--------------------------+-------------------------------+
8 rows in set (0.00 sec)

我的没问题,显示正常。
回复
发动态
发帖子
基础编程
创建于2007-09-28

2.1w+

社区成员

从PHP安装配置,PHP入门,PHP基础到PHP应用
申请成为版主
社区公告
暂无公告