IT猫扑网:您身边最放心的安全下载站! 最新更新|软件分类|软件专题|手机版|论坛转贴|软件发布

您当前所在位置: 首页操作系统LINUX → 有关日文压缩文件乱码的问题

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

时间:2015-06-28 00:00:00 来源:IT猫扑网 作者:网管联盟 我要评论(0)

  自己用的是日文的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] \n";

  exit 1;

  }

  my $zipfile = shift @ARGV;

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

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

  die 'read error';

  }

  print "Archive: $zipfile\n";

  if ($mode_list) {

  print <

  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 "%9d  %s  %s\n",

  $member->uncompressedSize,

  $dt->ymd('-') . ' ' . sprintf("%02d", $dt->hour) . ':' . sprintf("%02d", $dt->min),

  $filename;

  } else {

  print "  inflating: $filename\n";

  unless (defined $zip->extractMember($member, $filename)) {

  warn "  failed: $filename\n";

  }

  }

  }

  my $members_count_str = "$members_count file" . ($members_count > 1 ? 's' : '');

  if ($mode_list) {

  print <

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

  HERE

  printf "%9d  %s\n", $total_size, $members_count_str;

  }

关键词标签:日文压缩

相关阅读

文章评论
发表评论

热门文章 安装红帽子RedHat Linux9.0操作系统教程 安装红帽子RedHat Linux9.0操作系统教程 Tomcat9.0如何安装_Tomcat9.0环境变量配置方法 Tomcat9.0如何安装_Tomcat9.0环境变量配置方法 多种操作系统NTP客户端配置 多种操作系统NTP客户端配置 Linux操作系统修改IP Linux操作系统修改IP

相关下载

    人气排行 Linux下获取CPUID、硬盘序列号与MAC地址 dmidecode命令查看内存型号 linux tc实现ip流量限制 安装红帽子RedHat Linux9.0操作系统教程 linux下解压rar文件 lcx.exe、nc.exe、sc.exe入侵中的使用方法 Ubuntu linux 关机、重启、注销 命令 查看linux服务器硬盘IO读写负载