快速业务通道

有关日文压缩文件乱码的问题

作者 佚名技术 来源 Linux系统 浏览 发布时间 2012-04-15

  自己用的是日文的linux系统,昨天从同事那儿收了个压缩文件,结果解压之后文件名都乱吗了(内容正常显示).网上google了以下发现是windows下默认的编码方式时Shift-JIS,到了linux下之后虽然内容可以显示但是文件名却乱码.解决方法也挺简单的,perl提供了一些方法,直接写一个简短的程序即可.

  我也是从其他地方参照的,给一个例子程序.(这里需要安装Archive::Zip模块)

  #!/usr/bin/perl

  use strict;

  use warnings;

  use Archive::Zip qw( :ERROR_CODES :CONSTANTS );

  use Encode qw/from_to/;

  use Getopt::Long;

  use DateTime;

  use DateTime::TimeZone::Local;

  GetOptions(''list|l'' => my $mode_list);

  if (scalar @ARGV < 1) {

  print "Usage: $0 [-l] <zip file>n";

  exit 1;

  }

  my $zipfile = shift @ARGV;

  my $zip = Archive::Zip->new();

  unless ( $zip->read($zipfile) == AZ_OK ) {

  die ''read error'';

  }

  print "Archive: $zipfilen";

  if ($mode_list) {

  print <<HERE;

  Length Date Time Name

  -------- ---------- ----- ----

  HERE

  }

  my $total_size = 0;

  my @members = $zip->members();

  my $members_count = scalar @members;

  foreach my $member (@members) {

  my $filename = $member->fileName;

  from_to($filename, ''cp932'', ''utf8'');

  if ($mode_list) {

  my $dt = DateTime->from_epoch(

  epoch => $member->lastModTime

  )->set_time_zone(DateTime::TimeZone::Local->TimeZone());

  $total_size = $member->uncompressedSize;

  printf "

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号