LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 837|回复: 4

mysql与php中的汉字编码问题?

[复制链接]
发表于 2006-1-23 21:44:07 | 显示全部楼层 |阅读模式
mysql 和apache 为服务器,用php编写网页.
数据库编码为utf8,在php写的网页中,如果插入数据时,正确,数据库中的汉字在命令行下也
能正常显示,但在网页中读出的汉字是乱码.需要怎样设定配置文件才能解决问题
发表于 2006-1-24 08:52:58 | 显示全部楼层
请先检查你的程序,不要先怀疑Apache和PHP的设置----如果你采用默认设置的话。

因为不知道你的PHP程序是什么样的,解决方法是在发送查询前执行一下下面这句:
SET NAMES 'utf8';

请问你的PHP文件是以什么编码格式存储的?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-1-25 11:43:46 | 显示全部楼层
怎么看PHP文件是以什么编码格式存储的?,我只知道是文本格式,编码不知道怎么看。
还有就是如果把数据库设为gb2312,表也设为gb2312,文本文件为ANSI编码,
mysql> load data infile 'my_data.txt'  into table my_table ;
报错data too long on columns 'name';
name 是其中的一个字段名,格式为char(20) 或 text 。
回复 支持 反对

使用道具 举报

发表于 2006-1-25 13:33:42 | 显示全部楼层
如果你使用gedit,另存时候选编码。如果你使用别的软件,请看软件帮助或者咨询软件提供商。如果你不知道你的源文件是什么编码就胡乱设置编码标签,不乱码才怪。我发现,大部分的乱码都是因为写程序的人不知道他用什么编码存储的文件。

有一点需要注意的,就是Apache和PHP的配置文件中要把default_charset(类似名)设置为off或者注释掉。因为使用什么编码应该由程序员决定,而不是由服务器强行设置。

网上很多人解决Apache中文乱码的方法是修改Apache 的配置文件conf/httpd.conf,将AddDefaultCharset ISO-8859-1 改成 AddDefaultCharset GB2312。

这种方法是极不负责任的!一但你这样改,以后Apache要是遇见编码为UTF-8等非GB2312的源文件,很有可能就会出错。因为AddDefaultCharset使Apache能够忽略html页面里meta的相关设置。

所以正确的方法应该是将AddDefaultCharset ISO-8859-1 改成 AddDefaultCharset off。然后在HTML文件文件里加入<meta http-equiv=
"Content-Type" content="text/html; charset=gb2312" />把gb2312改为你的HTML文件的编码。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-1-25 20:49:14 | 显示全部楼层
谢谢,我先试试.
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表