68user's page 掲示板

Prev< No. 2432> Next  [最新発言に戻る] [過去ログ一覧]
No. 2432 # ふくし [E-mail] 2002/01/23 (水) 17:20:59
こんにちは。ヒサブリに質問です。

下のような CGI で euc、sjis の文字列をブラウザに表示します。

#! perl -w
# ~/public_html/cgi-bin/moji.cgi

use CGI;
use Jcode;

my $q = CGI->new;
print $q->header();
print $q->start_html();
print $q->start_form(-action=>'./answer.cgi');

$str_euc = 'こんにちは';
$str_sjis = $str_euc;
Jcode::convert(\$str_sjis, 'euc', 'sjis');

print "euc: $str_euc <br>";
print "sjis: $str_sjis <br>";
print "unpacked euc: ".unpack("H10", $str_euc)."<br>";
print "unpacked sjis: ".unpack("H10", $str_sjis)."<br>";
print "eq:".($str_euc eq $str_sjis)."<br>";

コード自体は EUC で書きました。
ブラウザの設定を EUC にすると、
当然のように、EUC 部分は正しく、sjis 部分は文字化けになります。
(本当は sjis 部分は半角カナになりました)

http://www/~fukushi/cgi-bin/moji.cgiの表示)
euc: こんにちは
sjis: 、ウ、・ヲヒ、チ、マ
unpacked euc: a4b3a4f3a4
unpacked sjis: 8ea48eb38e
eq:

これ、ブラウザの設定を sjis にすると、
euc も sjis も文字化けになります。
これはなぜでしょう?

http://www/~fukushi/cgi-bin/moji.cgiの表示)
euc: 、ウ、・ヲヒ、チ、マ
sjis: 痔宍痔・ヲ射痔蔀痔煮
unpacked euc: a4b3a4f3a4
unpacked sjis: 8ea48eb38e
eq:

で、下のように出力する文字列を URL から取得します。

#! perl -w
# ~/public_html/cgi-bin/moji.cgi

use CGI;
use Jcode;

my $q = CGI->new;
print $q->header();
print $q->start_html();
print $q->start_form(-action=>'./answer.cgi');

$str_euc = $q->url_param('greeting');
$str_sjis = $str_euc;
Jcode::convert(\$str_sjis, 'euc', 'sjis');

print "euc: $str_euc <br>";
print "sjis: $str_sjis <br>";
print "unpacked euc: ".unpack("H10", $str_euc)."<br>";
print "unpacked sjis: ".unpack("H10", $str_sjis)."<br>";
print "eq:".($str_euc eq $str_sjis)."<br>";

こうすると、ブラウザの設定を euc にすると、
なんと、euc も sjis も正しく表示されます。

http://www/~fukushi/cgi-bin/moji.cgi?greeting=こんにちは の表示)
euc: こんにちは
sjis: こんにちは
unpacked euc: a4b3a4f3a4
unpacked sjis: 8ea48eb38e
eq:

ブラウザの表示を sjis にすると、euc 部のみ正しく表示されます。

http://www/~fukushi/cgi-bin/moji.cgi?greeting=こんにちは の表示)
http://www/~fukushi/cgi-bin/moji.cgiの表示)
euc: こんにちは
sjis: 、ウ、・ヲヒ、チ、マ
unpacked euc: a4b3a4f3a4
unpacked sjis: 8ea48eb38e
eq:

これはなぜでしょう?
サーバーの OS は FreeBSD 2.2.8-RELEASE、
言語は jperl5.005_03-990612 EUC Version(Latin モードで使用)、
クライアントの OS は Windows 2000 server、
ブラウザーは Netscape Navigator 4.75 です。

Prev< No. 2432> Next  [最新発言に戻る] [過去ログ一覧]