aboutsummaryrefslogtreecommitdiffstats
path: root/scripts/w3mmail.cgi.in
diff options
context:
space:
mode:
authorFumitoshi UKAI <ukai@debian.or.jp>2003-09-22 21:02:15 +0000
committerFumitoshi UKAI <ukai@debian.or.jp>2003-09-22 21:02:15 +0000
commit604c11affe988bab23c87598c02248fff1d73f43 (patch)
tree6252cbbfd3cf703691a8ddbf1fdee5c1246b5faa /scripts/w3mmail.cgi.in
parent* version.c.in: cvs version (diff)
downloadw3m-604c11affe988bab23c87598c02248fff1d73f43.tar.gz
w3m-604c11affe988bab23c87598c02248fff1d73f43.zip
merge m17n patch
add libwc
Diffstat (limited to 'scripts/w3mmail.cgi.in')
-rwxr-xr-xscripts/w3mmail.cgi.in61
1 files changed, 55 insertions, 6 deletions
diff --git a/scripts/w3mmail.cgi.in b/scripts/w3mmail.cgi.in
index e544362..670f26c 100755
--- a/scripts/w3mmail.cgi.in
+++ b/scripts/w3mmail.cgi.in
@@ -1,6 +1,6 @@
#!@PERL@
-$rcsid = q$Id: w3mmail.cgi.in,v 1.12 2003/01/15 17:13:22 ukai Exp $;
+$rcsid = q$Id: w3mmail.cgi.in,v 1.13 2003/09/22 21:02:29 ukai Exp $;
($id = $rcsid) =~ s/^.*,v ([\d\.]*).*/$1/;
($prog=$0) =~ s/.*\///;
@@ -43,7 +43,7 @@ if ($query =~ s/^\w+://) {
}
&lang_setup;
- print "Content-Type: text/html\r\n";
+ print "Content-Type: text/html; charset=$charset\r\n";
print "w3m-control: END\r\n";
print "w3m-control: PREV_LINK\r\n";
print "\r\n";
@@ -99,7 +99,7 @@ if ($query =~ s/^\w+://) {
&lang_setup;
if ($act eq "Preview") {
- print "Content-Type: text/html\r\n";
+ print "Content-Type: text/html; charset=$charset\r\n";
print "w3m-control: DELETE_PREVBUF\r\n";
print "w3m-control: NEXT_LINK\r\n";
print "\r\n";
@@ -215,6 +215,9 @@ sub lang_setup {
} else {
$use_NKF = 0;
}
+ $charset = "EUC-JP";
+ } else {
+ $charset = &guess_charset($lang);
}
}
@@ -247,7 +250,7 @@ sub lang_html_quote {
sub lang_header_default {
local($h) = @_;
if ($h =~ s/([=_?\x80-\xFF])/sprintf("=%02x", ord($1))/ge) {
- return "=?iso-8859-1?Q?$h?=";
+ return "=?$charset?Q?$h?=";
} else {
return $h;
}
@@ -258,9 +261,9 @@ sub lang_body_default {
if ($body =~ /[\x80-\xFF]/) {
if ($_7bit) {
$body =~ s/([=\x80-\xFF])/sprintf("=%02x", ord($1))/ge;
- return ("iso-8859-1", "quoted-printable", $body);
+ return ($charset, "quoted-printable", $body);
} else {
- return ("iso-8859-1", "8bit", $body);
+ return ($charset, "8bit", $body);
}
} else {
return ("US-ASCII", "7bit", $body);
@@ -352,3 +355,49 @@ sub url_unquote {
s/\+|%([0-9A-Fa-f][0-9A-Fa-f])/$& eq '+' ? ' ' : pack('c', hex($1))/ge;
return $_;
}
+
+sub guess_charset {
+ local(%lang_charset) = (
+ 'cs', 'iso-8859-2',
+ 'el', 'iso-8859-7',
+ 'iw', 'iso-8859-8',
+ 'ja', 'EUC-JP',
+ 'ko', 'EUC-KR',
+ 'hu', 'iso-8859-2',
+ 'pl', 'iso-8859-2',
+ 'ro', 'iso-8859-2',
+ 'ru', 'iso-8859-5',
+ 'sk', 'iso-8859-2',
+ 'sl', 'iso-8859-2',
+ 'tr', 'iso-8859-9',
+ 'zh', 'GB2312',
+ );
+ local($_) = @_;
+ local($lang);
+
+ if (! s/\.(.*)$//) {
+ if (/^zh_tw/i) {
+ return 'Big5';
+ }
+ /^(..)/;
+ return $lang_charset{$1} || 'iso-8859-1';
+ }
+ $lang = $_;
+ $_ = $1;
+ if (/^euc/i) {
+ if (/^euc$/i) {
+ $lang =~ /^zh_tw/ && return 'EUC-TW';
+ $lang =~ /^zh/ && return 'GB2312';
+ $lang =~ /^ko/ && return 'EUC-KR';
+ return 'EUC-JP';
+ }
+ /^euccn/i && return 'GB2312';
+ s/[\-_]//g;
+ s/^euc/EUC-/i;
+ tr/a-z/A-Z/;
+ } elsif (/^iso8859/i) {
+ s/[\-_]//g;
+ s/^iso8859/iso-8859-/i;
+ }
+ return $_;
+}