URN Logo
UNIX Resources » Linux » China Linux Forum » Perl 编 程 » 10 » 讨厌的中文乱码,
announcement 声明: 本页内容为中国Linux论坛的内容镜像,文章的版权以及其他所有的相关权利属于中国Linux论坛和相应文章的作者,如果转载,请注明文章来源及相关版权信息。
Resources
China Linux Forum(finished)
Linux Forum(finished)
FreeBSD China(finished)
linuxforum.net
  业界新闻与评论
  自由软件杂谈
  IT 人生
  Linux软件快递
  翻译作坊
  Linux图书与评论
  GNU Emacs/XEmacs
  Linux 中文环境和中文化
  Linux桌面与办公软件
  Linux 多媒体与娱乐版
  自由之窗Mozilla
  笔记本电脑上的Linux
  Gentoo
  Debian 一族
  网络管理技术
  Linux 安装与入门
  WEB服务器和FTP服务器
  域名服务器和邮件服务器
  Linux防火墙和代理服务器应用
  文件及打印服务器
  技术培训与认证
  Linux内核技术
  Linux 嵌入技术
  Linux设备驱动程序
  Linux 集群技术
  LINUX平台数据库
  系统和网络安全
  CPU 与 编译器
  系统计算研究所专栏
  Linux下的GUI软件开发
  C/C++编程版
  PHP 技 术
  Java&jsp技术
  Shell编程技术
  Perl 编 程
  Python 编 程
  XML/Web Service 技术
  永远的Unix
  FreeBSD世界
   
讨厌的中文乱码,
讨厌的中文乱码, - 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)]
 
Subject: 讨厌的中文乱码,
Author: ponderh    Posted: 2003-01-27 06:42    Length: 527 byte(s)
[Original] [Print] [Top]
RedHat8.0, 东西都是系统原来的.

用一个Perl程序生产一个含有中文的页面, 但是在浏览器中全部是乱码.

其它线索:
1. 程序和页面全部在Linux下写的, 在本机上浏览没有问题, 传到另外一台机器(也是RedHat8.0)上就出问题了.

2. 其它一些由PHP产生的页面和静态页面里面的中文显示都没有问题, 唯独由这个Perl程序生产的HTML文件里面的中文显示出来是乱麻.

3. 上传方式用ASCII, bin, auto都试过, 不行.

请大家帮忙分析一下, 呵呵, 到现在还没有睡觉呢, 好困啊:-)
----
ponderh
[Original] [Print] [Top]
Subject: Re: 讨厌的中文乱码,
Author: ponderh    Posted: 2003-01-27 17:17    Length: 570 byte(s)
[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]
Subject: Re: 讨厌的中文乱码,
Author: ifox    Posted: 2003-09-27 11:57    Length: 635 byte(s)
[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]
« Previous thread
请帮选择PERL与PHP?
Perl 编 程
10
Next thread »
请教 #!/usr/bin/perl -wT
     

Copyright © 2007 UNIX Resources Network, All Rights Reserved.      About URN | Privacy & Legal | Help | Contact us
备案序号: 京ICP备05006143    webmaster: webmaster@unixresources.net
This page created on 2008-07-17 04:09:17, cost 0.06361198425293 ms.