Changeset 8
- Timestamp:
- 04/06/05 19:13:02 (3 years ago)
- Files:
-
- I18N-encode/trunk/I18N-encode.pm (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
I18N-encode/trunk/I18N-encode.pm
r1 r8 1 # MT::I18N (encode version) by Hirotaka Ogawa (http://as-is.net/blog/)1 # MT::I18N for Encode.pm 2 2 # 3 # Release 0.0 3 (Aug 17, 2004)3 # Release 0.04 (Mar 26, 2005) 4 4 # 5 5 # This software is provided as-is. You may use it for commercial or 6 6 # personal use. If you distribute it, please keep this notice intact. 7 7 # 8 # Copyright (c) 2004 Hirotaka Ogawa8 # Copyright (c) 2004,2005 Hirotaka Ogawa 9 9 10 10 package MT::I18N; … … 12 12 use strict; 13 13 use MT::ConfigMgr; 14 use Encode qw/from_to encode decode resolve_alias/; 14 use MT::Util qw(remove_html); 15 use Encode qw/encode decode resolve_alias/; 15 16 use Encode::Guess qw/euc-jp shiftjis 7bit-jis/; 16 use MT::Util qw(remove_html);17 17 18 no warnings 'redefine'; 18 19 sub guess_encoding { 19 20 my ($text) = @_; 20 21 my $enc = Encode::Guess::guess_encoding($text); 21 if (ref $enc) { 22 return $enc->name; 23 } elsif ($enc) { 24 my %code = map { ($_, 1) } split / or /, $enc; 25 my ($euc,$sjis,$utf8) = (0,0,0); 22 return $enc->name if ref $enc; 23 if ($enc) { 24 my %code = map { ($_, 1) } split / or /, $enc; 25 my ($euc,$sjis,$utf8) = (0,0,0); 26 26 27 $utf8 = length(decode('utf8', $text)) if $code{'utf8'};28 return 'utf8' if $utf8;27 $utf8 = length(decode('utf8', $text)) if $code{'utf8'}; 28 return 'utf8' if $utf8; 29 29 30 $sjis = length(decode('shiftjis', $text)) if $code{'shiftjis'};31 $euc = length(decode('euc-jp', $text)) if $code{'euc-jp'};32 return 'shiftjis' if $sjis > $euc;33 return 'euc-jp' if $euc;30 $sjis = length(decode('shiftjis', $text)) if $code{'shiftjis'}; 31 $euc = length(decode('euc-jp', $text)) if $code{'euc-jp'}; 32 return 'shiftjis' if $sjis > $euc; 33 return 'euc-jp' if $euc; 34 34 } 35 35 $enc = MT::ConfigMgr->instance->PublishCharset || 'utf8'; 36 36 return $enc; 37 37 } 38 use warnings 'redefine'; 38 39 39 40 sub encode_text { 40 41 my ($text, $from, $to) = @_; 41 42 if (!$from) { 42 $from = MT::I18N::guess_encoding($text);43 $from = guess_encoding($text); 43 44 } 44 45 if (!$to) { … … 53 54 sub substr_text { 54 55 my ($text, $startpos, $length) = @_; 55 my $enc = MT::I18N::guess_encoding($text);56 my $enc = guess_encoding($text); 56 57 my $decoded = decode($enc, $text); 57 58 $decoded = $length ? substr($decoded, $startpos, $length) : substr($decoded, $startpos); … … 61 62 sub wrap_text { 62 63 my ($text, $cols, $tab_init, $tab_sub) = @_; 63 my $enc = MT::I18N::guess_encoding($text);64 my $enc = guess_encoding($text); 64 65 $cols ||= 72; 65 66 my $decoded = decode($enc, $text); … … 83 84 sub length_text { 84 85 my ($text) = @_; 85 my $enc = MT::I18N::guess_encoding($text);86 my $enc = guess_encoding($text); 86 87 return length(decode($enc, $text)); 87 88 } … … 96 97 sub mime_encode { 97 98 my ($text, $enc) = @_; 98 $enc ||= MT::I18N::guess_encoding($text);99 $enc ||= guess_encoding($text); 99 100 $text = encode("MIME-Header", decode($enc, $text)); 100 101 $text =~ s/\r?\n/\r\n/g;
