# **************************************************************************** # # SJIS -> ASCII文字列変換モジュール 1.00 [2003-07-06 RELEASE] # copyright(c)2001.2003 WSZK WEB All rights reserved. # [URL] http://wszk.s8.xrea.com/software.html # # <使用例> # use Sjis2Asc2; # $obj = new sjis2asc; # $str = $obj->conv($str); # print $str; # # <注意> # 変換する文字列の漢字コードがSJIS以外の場合はJcode等でコンバートしてから # 実行してください。 # **************************************************************************** # package sjis2asc; sub new { my($pkg) = shift; my(%conv) = ( # 数字 "0",'0', "1",'1', "2",'2', "3",'3', "4",'4', "5",'5', "6",'6', "7",'7', "8",'8', "9",'9', # 英大文字 "A",'A', "B",'B', "C",'C', "D",'D', "E",'E', "F",'F', "G",'G', "H",'H', "I",'I', "J",'J', "K",'K', "L",'L', "M",'M', "N",'N', "O",'O', "P",'P', "Q",'Q', "R",'R', "S",'S', "T",'T', "U",'U', "V",'V', "W",'W', "X",'X', "Y",'Y', "Z",'Z', # 英小文字 "a",'a', "b",'b', "c",'c', "d",'d', "e",'e', "f",'f', "g",'g', "h",'h', "i",'i', "j",'j', "k",'k', "l",'l', "m",'m', "n",'n', "o",'o', "p",'p', "q",'q', "r",'r', "s",'s', "t",'t', "u",'u', "v",'v', "w",'w', "x",'x', "y",'y', "z",'z', # 記号 "、",'、', "。",'。', ",",',', ".",'.', "・",'・', ":",':', ";",';', "?",'?', "!",'!', "^",'^', "_",'_', "ー",'ー', "/",'/', "|",'|', "’","'", "”",'"', "(",'(', ")",')', "[",'[', "]",']', "{",'{', "}",'}', "+",'+', "−",'-', "=",'=', "<",'<', ">",'>', "¥",'\\', "$",'$', "%",'%', "#",'#', "&",'&', "*",'*', "@",'@', # カタカナ "\x83\x40",'ァ', "\x83\x41",'ア', "\x83\x42",'ィ', "\x83\x43",'イ', "\x83\x44",'ゥ', "\x83\x45",'ウ', "\x83\x46",'ェ', "\x83\x47",'エ', "\x83\x48",'ォ', "\x83\x49",'オ', "\x83\x4A",'カ', "\x83\x4B",'ガ', "\x83\x4C",'キ', "\x83\x4D",'ギ', "\x83\x4E",'ク', "\x83\x4F",'グ', "\x83\x50",'ケ', "\x83\x51",'ゲ', "\x83\x52",'コ', "\x83\x53",'ゴ', "\x83\x54",'サ', "\x83\x55",'ザ', "\x83\x56",'シ', "\x83\x57",'ジ', "\x83\x58",'ス', "\x83\x59",'ズ', "\x83\x5A",'セ', "\x83\x5B",'ゼ', "\x83\x5C",'ソ', "\x83\x5D",'ゾ', "\x83\x5E",'タ', "\x83\x5F",'ダ', "\x83\x60",'チ', "\x83\x61",'ヂ', "\x83\x62",'ッ', "\x83\x63",'ツ', "\x83\x64",'ヅ', "\x83\x65",'テ', "\x83\x66",'デ', "\x83\x67",'ト', "\x83\x68",'ド', "\x83\x69",'ナ', "\x83\x6A",'ニ', "\x83\x6B",'ヌ', "\x83\x6C",'ネ', "\x83\x6D",'ノ', "\x83\x6E",'ハ', "\x83\x6F",'バ', "\x83\x70",'パ', "\x83\x71",'ヒ', "\x83\x72",'ビ', "\x83\x73",'ピ', "\x83\x74",'フ', "\x83\x75",'ブ', "\x83\x76",'プ', "\x83\x77",'ヘ', "\x83\x78",'ベ', "\x83\x79",'ペ', "\x83\x7A",'ホ', "\x83\x7B",'ボ', "\x83\x7C",'ポ', "\x83\x7D",'マ', "\x83\x7E",'ミ', "\x83\x80",'ム', "\x83\x81",'メ', "\x83\x82",'モ', "\x83\x83",'ャ', "\x83\x84",'ヤ', "\x83\x85",'ュ', "\x83\x86",'ユ', "\x83\x87",'ョ', "\x83\x88",'ヨ', "\x83\x89",'ラ', "\x83\x8A",'リ', "\x83\x8B",'ル', "\x83\x8C",'レ', "\x83\x8D",'ロ', "\x83\x8F",'ワ', "\x83\x92",'ヲ', "\x83\x93",'ン' ); my($hash) = { 'table' => \%conv }; bless $hash, $pkg; } sub conv { my($self, $str) = @_; my($new) = ''; my($i) = 0; my($len) = length($str); while($i < $len) { my($c1) = substr($str, $i++, 1); my($c2) = substr($str, $i, 1); if($c1 =~ /[\x81-\x9F\xE0-\xF7\xFA-\xFC]/) { $i++; if(${$self->{table}}{"$c1$c2"} ne '') { $new .= ${$self->{table}}{"$c1$c2"}; } else { $new .= "$c1$c2"; } } else { $new .= $c1; } } return $new; } 1;