漢字のURLエンコードが%の3桁になります!

[上に] [前に] [次に]
ラウォッチ [E-Mail] 2000/01/11(火) 17:39:13
フォームのmailto:でメールした時に、
漢字(2バイト文字)はURLエンコードされ、
たとえば、SJIS「あ」コード0x82A0場合、%82%A0になりますが、

「池」など本来 %92%72になるべきなのに %92r とかになります。
また、JISの「は」は %24O で「ン」は %25sになるみたいです。

なぜ %の3桁になるのか、わかる方、教えて下さい。

2000/01/11(火) 17:53:35
モジラ5かIE5を使ってませんか?
こいつらはURLエンコードが%4桁のユニコードになるみたいです。

2000/01/11(火) 18:32:32
ごめん間違いm(_ _)m
rの文字コードは0x72で、
つまり%xxのところがASCII文字に有るものは
URLエンコードされないみたいです、
http://www.tohoho-web.com/wwwkanji.htm
のASCIIコード表を見てください。

ラウォッチ 2000/01/11(火) 19:08:40
@さん、理解できました、ありがとうございました。

こういう現象は、今のところmailto:の時だけですよね。
CGIで受けた時は、%の2桁ですよね。確か...。

ラウォッチ 2000/01/11(火) 20:26:35
[[解決]]
自己レスです。
>CGIで受けた時は、%の2桁ですよね。確か...。
もたぶん、mailto:と同じでしょう!
(ちゃんと対応していた 昔作ったルーチン...ホッ)

ラウォッチ 2000/01/12(水) 08:55:32
自己レスパート2
URLエンコードを再度調べました。

A〜Z、a〜z、0〜9、* - . @ _ はそのまま。
半角スペースは + に変換。
その他はすべて % に16進の2桁の文字コード。
たとえば、「あ」0x2422なら %24%22になります。

ですので、漢字の場合、2バイトを1バイトづつにした時、
A〜Z、a〜z、0〜9、* - . @ _のコードと同じだったら %xxにならず、
そのまま表示され、%92rのようにあたかも%の3桁になります。

2000/01/12(水) 09:11:35
上記補足
EUCでは日本語文字は必ずASCIIの範囲外になります、
このような問題はSJISでおこります。

[上に] [前に] [次に]