歡迎您光臨本站 註冊首頁

有關日文壓縮文件亂碼的問題

←手機掃碼閱讀     火星人 @ 2014-03-09 , reply: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] <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 "


[火星人 ] 有關日文壓縮文件亂碼的問題已經有623次圍觀

http://coctec.com/docs/linux/show-post-50264.html