解决处理 UTF-8 编码XML文件时,输出和写入乱码问题
以前用 Perl 处理 UTF-8 编码的 XML 文件时,总是遇到奇怪的问题:
单独输出读取的中文 XML 信息,没有问题,但是一旦和其他中文字符(比如定义的中文变量)混合输出就会出现乱码
eg:
$xml->{"chunk"}{"comment"} 包含了中文信息
my $cnstr="变量中的中文信息";
## 出现乱码
print $xml->{"chunk"}{"comment"} . $cnstr ;
## 正常
print $xml->{"chunk"}{"comment"};
print $cnstr;
仔细研究了下 UTF8 下中文处理 [转载] 和 Perl中的unicode问题及解决办法(译),现在总算找到原因了:
UTF-8 编码的 XML 文件默认就含有 utf8 标记,而一般自定义的变量不含,两者混合输出时,Perl 会认为两者都不含或都含(看谁在前) utf8 标记,于是乱码就产生了。
解决办法:
读取 XML 文件后,用 Encode::_utf8_off($str) 来去掉 utf8 标记
写入 XML 文件前,用 Encode::_uft8_on($str) 加上 utf8 标记
如:
### 读取
$comment = $xml->{"chunk"}{"comment"};
Encode::_utf8_off($comment);
...
### 写入
$comment= param('comment'); ## 获取网页提交的信息
Encode::_utf8_on($comment);
$xml->{"chunk"}{"comment"} = $comment;
....
Subscribe to:
Post Comments (Atom)
Featured Post
Windows和Ubuntu双系统完全独立的安装方法
http://www.ubuntuhome.com/windows-and-ubuntu-install.html | Ubuntu Home Posted by Snow on 2012/06/25 安装Windows和Ubuntu双系统时,很多人喜欢先安装windows,然...
-
http://www.williamlong.info/archives/3125.html -月光博客 互联网精准广告定向技术,指的是依托于搜索引擎庞大的网民行为数据库,对网民几乎所有上网行为进行个性化的深度分析,按广告主需求锁定目标受众,进行一对一传播,提供多通道投放,按照效...
-
VOA News A wine-tasting near Beijing, China Finally, a listener in Taiwan wrote to ask why his face turns red when he drinks alcohol. Th...
-
How to Debug PHP Using Firefox with FirePHP July 11th, 2009 by Nuno Franco da Costa Typically, there are two main ways of debugging serve...
No comments:
Post a Comment