cgi.rb
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
*目次 [#b23cc832]
#contents
*CGIサンプル [#tf0517db]
**シンプルなcgi [#dd3d34ae]
-画面に"Hello cgi.rb"と表示するシンプルなcgi。
#pre{{
require "cgi"
cgi = CGI.new
print cgi.header({"charset" => "UTF-8"});
print "<html><head><title>Hello cgi.rb</title></head>\n"
print "<body><h1>Hello cgi.rb</h1></body></html>\n"
}}
*トラブルシューティング [#cfadc21c]
**CGI.unescapeHTMLの改良 [#gf826561]
-ActiveScriptRuby 1.8.7でCGI::unescapeHTML('©')がお...
-[[Ruby - 雑記帳:http://www.fse.cs.ritsumei.ac.jp/noteboo...
#pre{{
require 'cgi'
class CGI
# HTMLエンティティーの定義
HtmlEntity = Hash[ *%w(nbsp 160 iexcl 161 cent 162 poun...
yen 165 brvbar 166 sect 167 uml 168 copy 169 ordf 170...
shy 173 reg 174 macr 175 deg 176 plusmn 177 sup2 178 ...
shy 173 reg 174 macr 175 deg 176 plusmn 177 sup2 178 ...
micro 181 para 182 middot 183 cedil 184 sup1 185 ordm...
frac14 188 frac12 189 frac34 190 iquest 191 Agrave 19...
Atilde 195 Auml 196 Aring 197 AElig 198 Ccedil 199 Eg...
Eacute 201 Ecirc 202 Euml 203 Igrave 204 Iacute 205 I...
Iuml 207 ETH 208 Ntilde 209 Ograve 210 Oacute 211 Oci...
Ouml 214 times 215 Oslash 216 Ugrave 217 Uacute 218 U...
Yacute 221 THORN 222 szlig 223 agrave 224 aacute 225 ...
atilde 227 auml 228 aring 229 aelig 230 ccedil 231 eg...
eacute 233 ecirc 234 euml 235 igrave 236 iacute 237 i...
eth 240 ntilde 241 ograve 242 oacute 243 ocirc 244 ot...
divide 247 oslash 248 ugrave 249 uacute 250 ucirc 251...
yacute 253 thorn 254 yuml 255 fnof 402 Alpha 913 Beta...
Delta 916 Epsilon 917 Zeta 918 Eta 919 Theta 920 Iota...
Lambda 923 Mu 924 Nu 925 Xi 926 Omicron 927 Pi 928 Rh...
Tau 932 Upsilon 933 Phi 934 Chi 935 Psi 936 Omega 937...
beta 946 gamma 947 delta 948 epsilon 949 zeta 950 eta...
iota 953 kappa 954 lambda 955 mu 956 nu 957 xi 958 om...
rho 961 sigmaf 962 sigma 963 tau 964 upsilon 965 phi ...
omega 969 thetasym 977 upsih 978 piv 982 bull 8226 he...
Prime 8243 oline 8254 frasl 8260 weierp 8472 image 84...
trade 8482 alefsym 8501 larr 8592 uarr 8593 rarr 8594...
harr 8596 crarr 8629 lArr 8656 uArr 8657 rArr 8658 dA...
forall 8704 part 8706 exist 8707 empty 8709 nabla 871...
notin 8713 ni 8715 prod 8719 sum 8721 minus 8722 lowa...
prop 8733 infin 8734 ang 8736 and 8743 or 8744 cap 87...
int 8747 there4 8756 sim 8764 cong 8773 asymp 8776 ne...
le 8804 ge 8805 sub 8834 sup 8835 nsub 8836 sube 8838...
oplus 8853 otimes 8855 perp 8869 sdot 8901 lceil 8968...
lfloor 8970 rfloor 8971 lang 9001 rang 9002 loz 9674 ...
clubs 9827 hearts 9829 diams 9830 quot 34 amp 38 lt 6...
oelig 339 Scaron 352 scaron 353 Yuml 376 circ 710 til...
emsp 8195 thinsp 8201 zwnj 8204 zwj 8205 lrm 8206 rlm...
mdash 8212 lsquo 8216 rsquo 8217 sbquo 8218 ldquo 822...
bdquo 8222 dagger 8224 Dagger 8225 permil 8240 lsaquo...
rsaquo 8250 euro 8364) ].inject({}){|r,v|
r[v[0]] = [v[1].to_i].pack("U")
r
}
# CGI.unescapeHtml の修正版
def self.unescapeHTML( string )
return unescapeHTMLnoUTF8( string ) if $KCODE != 'UTF8'
string.gsub(/&([^&;]{2,8});/n) do |ma|
HtmlEntity[$1] or
case $1.dup
when /\A#0*(\d+)\z/n then
(i = Integer($1)) < 65536 ? [i].pack("U") : ma
when /\A#x([0-9a-f]+)\z/ni then
(i = $1.hex ) < 65536 ? [i].pack("U") : ma
else
ma
end
end
end
# CGI.unescapeHtml の修正版 の UTF8以外の時の処理
def self.unescapeHTMLnoUTF8( string )
string.gsub(/&([^&;]{2,8});/n) do |ma|
match = $1.dup
if i = HtmlEntity[match]
i.chr < 128 ? i : ma
else
case match
when /\A#0*(\d+)\z/n then
(i = Integer($1)) < 128 ? i.chr : ma
when /\A#x([0-9a-f]+)\z/ni then
(i = $1.hex) < 128 ? i.chr : ma
else
ma
end
end
end
end
end
}}
終了行:
*目次 [#b23cc832]
#contents
*CGIサンプル [#tf0517db]
**シンプルなcgi [#dd3d34ae]
-画面に"Hello cgi.rb"と表示するシンプルなcgi。
#pre{{
require "cgi"
cgi = CGI.new
print cgi.header({"charset" => "UTF-8"});
print "<html><head><title>Hello cgi.rb</title></head>\n"
print "<body><h1>Hello cgi.rb</h1></body></html>\n"
}}
*トラブルシューティング [#cfadc21c]
**CGI.unescapeHTMLの改良 [#gf826561]
-ActiveScriptRuby 1.8.7でCGI::unescapeHTML('©')がお...
-[[Ruby - 雑記帳:http://www.fse.cs.ritsumei.ac.jp/noteboo...
#pre{{
require 'cgi'
class CGI
# HTMLエンティティーの定義
HtmlEntity = Hash[ *%w(nbsp 160 iexcl 161 cent 162 poun...
yen 165 brvbar 166 sect 167 uml 168 copy 169 ordf 170...
shy 173 reg 174 macr 175 deg 176 plusmn 177 sup2 178 ...
shy 173 reg 174 macr 175 deg 176 plusmn 177 sup2 178 ...
micro 181 para 182 middot 183 cedil 184 sup1 185 ordm...
frac14 188 frac12 189 frac34 190 iquest 191 Agrave 19...
Atilde 195 Auml 196 Aring 197 AElig 198 Ccedil 199 Eg...
Eacute 201 Ecirc 202 Euml 203 Igrave 204 Iacute 205 I...
Iuml 207 ETH 208 Ntilde 209 Ograve 210 Oacute 211 Oci...
Ouml 214 times 215 Oslash 216 Ugrave 217 Uacute 218 U...
Yacute 221 THORN 222 szlig 223 agrave 224 aacute 225 ...
atilde 227 auml 228 aring 229 aelig 230 ccedil 231 eg...
eacute 233 ecirc 234 euml 235 igrave 236 iacute 237 i...
eth 240 ntilde 241 ograve 242 oacute 243 ocirc 244 ot...
divide 247 oslash 248 ugrave 249 uacute 250 ucirc 251...
yacute 253 thorn 254 yuml 255 fnof 402 Alpha 913 Beta...
Delta 916 Epsilon 917 Zeta 918 Eta 919 Theta 920 Iota...
Lambda 923 Mu 924 Nu 925 Xi 926 Omicron 927 Pi 928 Rh...
Tau 932 Upsilon 933 Phi 934 Chi 935 Psi 936 Omega 937...
beta 946 gamma 947 delta 948 epsilon 949 zeta 950 eta...
iota 953 kappa 954 lambda 955 mu 956 nu 957 xi 958 om...
rho 961 sigmaf 962 sigma 963 tau 964 upsilon 965 phi ...
omega 969 thetasym 977 upsih 978 piv 982 bull 8226 he...
Prime 8243 oline 8254 frasl 8260 weierp 8472 image 84...
trade 8482 alefsym 8501 larr 8592 uarr 8593 rarr 8594...
harr 8596 crarr 8629 lArr 8656 uArr 8657 rArr 8658 dA...
forall 8704 part 8706 exist 8707 empty 8709 nabla 871...
notin 8713 ni 8715 prod 8719 sum 8721 minus 8722 lowa...
prop 8733 infin 8734 ang 8736 and 8743 or 8744 cap 87...
int 8747 there4 8756 sim 8764 cong 8773 asymp 8776 ne...
le 8804 ge 8805 sub 8834 sup 8835 nsub 8836 sube 8838...
oplus 8853 otimes 8855 perp 8869 sdot 8901 lceil 8968...
lfloor 8970 rfloor 8971 lang 9001 rang 9002 loz 9674 ...
clubs 9827 hearts 9829 diams 9830 quot 34 amp 38 lt 6...
oelig 339 Scaron 352 scaron 353 Yuml 376 circ 710 til...
emsp 8195 thinsp 8201 zwnj 8204 zwj 8205 lrm 8206 rlm...
mdash 8212 lsquo 8216 rsquo 8217 sbquo 8218 ldquo 822...
bdquo 8222 dagger 8224 Dagger 8225 permil 8240 lsaquo...
rsaquo 8250 euro 8364) ].inject({}){|r,v|
r[v[0]] = [v[1].to_i].pack("U")
r
}
# CGI.unescapeHtml の修正版
def self.unescapeHTML( string )
return unescapeHTMLnoUTF8( string ) if $KCODE != 'UTF8'
string.gsub(/&([^&;]{2,8});/n) do |ma|
HtmlEntity[$1] or
case $1.dup
when /\A#0*(\d+)\z/n then
(i = Integer($1)) < 65536 ? [i].pack("U") : ma
when /\A#x([0-9a-f]+)\z/ni then
(i = $1.hex ) < 65536 ? [i].pack("U") : ma
else
ma
end
end
end
# CGI.unescapeHtml の修正版 の UTF8以外の時の処理
def self.unescapeHTMLnoUTF8( string )
string.gsub(/&([^&;]{2,8});/n) do |ma|
match = $1.dup
if i = HtmlEntity[match]
i.chr < 128 ? i : ma
else
case match
when /\A#0*(\d+)\z/n then
(i = Integer($1)) < 128 ? i.chr : ma
when /\A#x([0-9a-f]+)\z/ni then
(i = $1.hex) < 128 ? i.chr : ma
else
ma
end
end
end
end
end
}}
ページ名: