|
|
|
|
 讨厌的中文乱码, - ponderh [ 2003-01-27 06:42 | 527 byte(s)]
 Re: 讨厌的中文乱码, - ponderh [ 2003-01-27 17:17 | 570 byte(s)]
 Re: 讨厌的中文乱码, - ifox [ 2003-09-27 11:57 | 635 byte(s)]
|
|
|
|
[Original]
[Print]
[Top]
|
RedHat8.0, 东西都是系统原来的.
用一个Perl程序生产一个含有中文的页面, 但是在浏览器中全部是乱码.
其它线索:
1. 程序和页面全部在Linux下写的, 在本机上浏览没有问题, 传到另外一台机器(也是RedHat8.0)上就出问题了.
2. 其它一些由PHP产生的页面和静态页面里面的中文显示都没有问题, 唯独由这个Perl程序生产的HTML文件里面的中文显示出来是乱麻.
3. 上传方式用ASCII, bin, auto都试过, 不行.
请大家帮忙分析一下, 呵呵, 到现在还没有睡觉呢, 好困啊:-)
|
|
|
----
ponderh
|
|
[Original]
[Print]
[Top]
|
|
[Original]
[Print]
[Top]
|
搞定了, 呵呵, 老手就是老手啊:-)
解决办法:
修改/etc/sysconfig/下的i18n文件.
原来的内容如下:
LANG="en_US.UTF-8"
SUPPORTED="zh_CN.GB18030:zh_CN:zh:en_US.UTF-8:en_US:en"
SYSFONT="latarcyrheb-sun16"
现在改为:
LANG="zh_CN.GB18030"
SUPPORTED="zh_HK.UTF-8:zh_HK:zh:zh_CN.GB18030:zh_CN:zh:zh_TW.Big5:zh_TW:zh:en_US.UTF-8:en_US:en"
SYSFONT="lat0-sun16"
SYSFONTACM="iso15"
|
|
|
----
ponderh
|
|
[Original]
[Print]
[Top]
|
|
[Original]
[Print]
[Top]
|
老兄,你这个方法我试了,没用。
仔细分析了返回的头,发现perl自动替你加上了:
Content-Type: text/html; charset=ISO-8859-1
覆盖了网页内容里的语言指定造成乱码。
修改Apache 的语言配置只能解决静态网页的问题,修改你说的i18n文件也不能解决问题。
经过查阅perl文档,才发现是perl里的CGI模块变化的缘故,head如果没有指定charset,就使用缺省的 ISO-8859-1
解决办法有两个:
1、修改你的perl程序,在发送head时指定 charset 为 GB312
2、如果你得程序很多,索性直接修改 perl 的 CGI.pm,将其中的缺省 charset 改为 GB2312
|
|
|
[Original]
[Print]
[Top]
|
|
|