時(shí)間:2015-06-28 00:00:00 來源:IT貓撲網(wǎng) 作者:網(wǎng)管聯(lián)盟 我要評(píng)論(0)
自己用的是日文的linux系統(tǒng),昨天從同事那兒收了個(gè)壓縮文件,結(jié)果解壓之后文件名都亂嗎了(內(nèi)容正常顯示)。網(wǎng)上google了以下發(fā)現(xiàn)是因?yàn)閣indows下默認(rèn)的編碼方式時(shí)Shift-JIS,到了linux下之后雖然內(nèi)容可以顯示但是文件名卻亂碼。解決方法也挺簡(jiǎn)單的,perl提供了一些方法,直接寫一個(gè)簡(jiǎn)短的程序即可。
我也是從其他地方參照的,給一個(gè)例子程序。(這里需要安裝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]
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; } 關(guān)鍵詞標(biāo)簽:日文壓縮
相關(guān)閱讀
熱門文章 安裝紅帽子RedHat Linux9.0操作系統(tǒng)教程 Tomcat9.0如何安裝_Tomcat9.0環(huán)境變量配置方法 多種操作系統(tǒng)NTP客戶端配置 Linux操作系統(tǒng)修改IP
人氣排行 Linux下獲取CPUID、硬盤序列號(hào)與MAC地址 dmidecode命令查看內(nèi)存型號(hào) linux tc實(shí)現(xiàn)ip流量限制 安裝紅帽子RedHat Linux9.0操作系統(tǒng)教程 linux下解壓rar文件 lcx.exe、nc.exe、sc.exe入侵中的使用方法 Ubuntu linux 關(guān)機(jī)、重啟、注銷 命令 查看linux服務(wù)器硬盤IO讀寫負(fù)載