う?IEのときうまくいかないのはひょっとしてCGIクラスのせいかも?
う?IEのときうまくいかないのはひょっとしてCGIクラスのせいかも?
#!/usr/bin/ruby -Ke require 'cgi' require 'nkf' class CGI_JP < CGI def brawser # b='' agent=self.user_agent case agent when /Opera/ b='Opera' when /Gecko/ case agent when /Win/ b='Mozilla(win)' else b='Mozilla(unix)' end when 'Mozilla/4.06 [ja] (WinNT; I)' b='NN4' when /DigExt/ b='IE4' else b='etc' end b end def path_info_jp # path_infoにオーバライド出来ない txt=path_info case self.brawser when 'Opera' `echo #{CGI::unescape(txt)}|iconv -f utf8 -t euc-jp` when 'Mozilla(win)' NKF::nkf('-eS',CGI::unescape(txt)) when 'Mozilla(unix)' CGI::unescape(txt) when 'IE4' if /%[0-9A-Z][0-9A-Z]/.match(txt) # 違ったURLエンコードじゃない `echo #{CGI::unescape(txt)}|iconv -f utf8 -t euc-jp` else NKF::nkf('-eS',txt) end when 'NN4' NKF::nkf('-eS',txt) else txt end end end cgi=CGI_JP.new puts "content-type: text/html" puts "\n\n" puts %Q(<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">) puts %Q(<html lang="ja-JP">) puts %Q(<head>) puts %Q(<meta http-equiv="content-type" content="text/html; charset=EUC-JP">) puts "</head>" print "<body>" puts '<h1>ブラウザ予想</h1>' puts cgi.brawser puts "<h1>user_agentの値</h1>" puts cgi.user_agent puts "<h1>path_infoの値</h1>" puts cgi.path_info_jp puts "<h1>urlエンコード</h1>" puts "#{CGI::escape(%Q(#{NKF::nkf('-eS',cgi.path_info)}))}" if cgi.has_key?('k') puts "<h1>そのまま表示</h1>" puts "#{cgi['k'].join(',')}" puts "<h1>urlエンコード</h1>" puts "#{CGI::escape(cgi['k'][0])}" else puts "no k" end puts "<h1>アンカー実験</h1>" puts '<a href="/jp/日本語?k=日本語&k=表示">日本語アンカー</a>'