Ruby Forum Ruby-dev > [Feature #542] cgi.rb : CGI::unescape return encoding

Posted by Takeyuki Fujioka (Guest)
on 03.09.2008 14:35
(Received via mailing list)
Feature #542: cgi.rb : CGI::unescape return encoding
http://redmine.ruby-lang.org/issues/show/542

$B5/I<<T(B: Takeyuki Fujioka
$B%9%F!<%?%9(B: Open, $BM%@hEY(B: Normal

CGI::unescape$B$O8=:_$O0z?t$N(Bencoding$B$G(Bforce_encoding$B$9$k$h$&$K(B
$B$J$C$F$$$^$9$,!"(Bascii_only?$B$,(Btrue$B$N>l9g$O(BUS-ASCII$B!"(B
false$B$N>l9g$O(BASCII-8BIT$B$rJV$9$N$,$$$$$H;W$$$^$9!#(B

Index: lib/cgi.rb
===================================================================
--- lib/cgi.rb  ($B%j%S%8%g%s(B 19071)
+++ lib/cgi.rb  ($B:n6H%3%T!<(B)
@@ -349,10 +349,10 @@
   #   string = CGI::unescape("%27Stop%21%27+said+Fred")
   #      # => "'Stop!' said Fred"
   def CGI::unescape(string)
-    enc = string.encoding
-    string.tr('+', ' ').gsub(/((?:%[0-9a-fA-F]{2})+)/) do
-      [$1.delete('%')].pack('H*').force_encoding(enc)
+    str=string.tr('+', ' ').gsub(/((?:%[0-9a-fA-F]{2})+)/) do
+      [$1.delete('%')].pack('H*')
     end
+    str.ascii_only? ? str.force_encoding("US-ASCII") : 
str.force_encoding("ASCII-8BIT")
   end

   TABLE_FOR_ESCAPE_HTML__ = {
Posted by Takeyuki Fujioka (Guest)
on 03.09.2008 16:56
(Received via mailing list)
$B%A%1%C%H(B #542 $B$,99?7$5$l$^$7$?!#(B (by Takeyuki Fujioka)


$B$3$N=$@5$N%F%9%H$rDI2C(B
Index: test/cgi/test_cgi_class_method.rb
===================================================================
--- test/cgi/test_cgi_class_method.rb  ($B%j%S%8%g%s(B 0)
+++ test/cgi/test_cgi_class_method.rb  ($B%j%S%8%g%s(B 0)
@@ -0,0 +1,21 @@
+require 'test/unit'
+require 'cgi'
+
+
+class CGIClassMethodTest < Test::Unit::TestCase
+  def test_cgi_class_method_escape
+    assert_equal(CGI::unescape("Hello"),"Hello")
+ 
assert_equal(CGI::unescape("Hello%21%22%25%26%27%28%29-%3D%5E%7E%7C"),
+      "Hello!\"#$\%&'()-=^~|")
+ 
unescaped=CGI::unescape("%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF")
+ 
assert_equal(unescaped,"\xE3\x81\x93\xE3\x82\x93\xE3\x81\xAB\xE3\x81\xA1\xE3\x81\xAF")
+    if RUBY_VERSION>="1.9.0"
+      assert_equal(CGI::unescape("Hello").encoding,Encoding::US_ASCII)
+ 
assert_equal(CGI::unescape("Hello%21%22%25%26%27%28%29-%3D%5E%7E%7C").encoding,
+                   Encoding::US_ASCII)
+      assert_equal(unescaped.encoding,Encoding::ASCII_8BIT)
+    end
+  end
+end
+
+

----------------------------------------
http://redmine.ruby-lang.org/issues/show/542
Posted by Tanaka Akira (Guest)
on 03.09.2008 20:59
(Received via mailing list)
In article <48be847681f43_55585b236f8341@redmine.ruby-lang.org>,
  Takeyuki Fujioka <redmine@ruby-lang.org> writes:

> CGI::unescape$B$O8=:_$O0z?t$N(Bencoding$B$G(Bforce_encoding$B$9$k$h$&$K(B
> $B$J$C$F$$$^$9$,!"(Bascii_only?$B$,(Btrue$B$N>l9g$O(BUS-ASCII$B!"(B
> false$B$N>l9g$O(BASCII-8BIT$B$rJV$9$N$,$$$$$H;W$$$^$9!#(B

$B0z?t$K$b$H$b$HHs(BASCII$BJ8;z$,F~$C$F$$$?>l9g$K$O$I$&$J$j$^$9$+$M!#(B
Posted by Fujioka (Guest)
on 03.09.2008 23:22
(Received via mailing list)
$BF#2,$G$9!#(B

>> CGI::unescape$B$O8=:_$O0z?t$N(Bencoding$B$G(Bforce_encoding$B$9$k$h$&$K(B
>> $B$J$C$F$$$^$9$,!"(Bascii_only?$B$,(Btrue$B$N>l9g$O(BUS-ASCII$B!"(B
>> false$B$N>l9g$O(BASCII-8BIT$B$rJV$9$N$,$$$$$H;W$$$^$9!#(B
> 
> $B0z?t$K$b$H$b$HHs(BASCII$BJ8;z$,F~$C$F$$$?>l9g$K$O$I$&$J$j$^$9$+$M!#(B

$B$=$NItJ,$O2?$bJQ49$5$l$^$;$s!#(B
$B%(%s%3!<%G%#%s%0$O(BASCII-8BIT$B$K$J$j$^$9!#(B
Posted by NARUSE, Yui (Guest)
on 04.09.2008 01:32
(Received via mailing list)
$B@.@%$G$9!#(B

Takeyuki Fujioka wrote:
> CGI::unescape$B$O8=:_$O0z?t$N(Bencoding$B$G(Bforce_encoding$B$9$k$h$&$K(B
> $B$J$C$F$$$^$9$,!"(Bascii_only?$B$,(Btrue$B$N>l9g$O(BUS-ASCII$B!"(B
> false$B$N>l9g$O(BASCII-8BIT$B$rJV$9$N$,$$$$$H;W$$$^$9!#(B

ascii_only? $B$J$H$-$K(B US-ASCII $B$rJV$9$N$O$$$$$H;W$&$N$G$9$,!"(B
false $B$J$H$-$K(B ASCII-8BIT $B$O$^$:$$$G$9$M!#(B

HTTP $B%X%C%@$G(B charset $B$r;XDj$5$l$D$D(B escape 
$B$5$l$FEO$5$l$?>l9g!"(B
$B$H$j$"$($:(B escape $B$5$l$?J8;zNs$K$=$N(B charset $B$r$D$1!"(B
$B$=$N8e$K(B unescape $B$9$k$C$F$N$O$=$l$J$j$K$"$j$&$kN.$l$J$N$G!#(B

Ruby M17N $B$G$O!"0lO"$N=hM}$N7k2L$N(B encoding $B$r;XDj$9$k:]$K!"(B
$B0z?t$N(B String#encodig 
$B$rMQ$$$k$H$$$&$3$H$O$7$P$7$P9T$o$l$^$9!#(B
Posted by Fujioka (Guest)
on 04.09.2008 02:46
(Received via mailing list)
$BF#2,$G$9!#(B

Fujioka wrote:
> 
$B%/%(%j$rEO$5$l$?>l9g$O$=$N%/%(%j$K(Bencoding$B$r$D$1$F(B
unescape$B$9$k$N$G$O$J$/$F!"(Bunescape$B$r$7$F$+$i(B
encoding$B$r$D$1$k$N$,=gHV$H$7$F$O@5$7$$$H;W$$$^$9!#(B
$B%/%(%j$ODL>o$O(Bascii$BJ8;zNs$N$O$:$J$N$G!"(B
$B$=$l$K(Bencoding$B$r$D$1$kJ}$,4V0c$C$F$$$k$H;W$$$^$9!#(B

$B$?$@!":#;W$C$F$$$k$N$O(BASCII$B0J30$O(BASCII-8BIT$B$K$J$k$N$O(B
$B$"$s$^$j$@$H;W$C$F$$$F!"(BCGI.new$B$7$?$H$-$K%*%W%7%g%s$G(B
$B4|BT$9$k(Bencoding$B$rEO$7$F$"$2$l$P(B
$B<+F0E*$K(BUS-ASCII$B$+$=$l0J30$N>l9g$O$=$N(Bencoding$B$K(Bforce_encoding$B$7$F(B
$B$"$2$k5!G=$,M_$7$$$H;W$C$F$$$^$9!#(B
$B$^$@93AhCf$G$9$,!#(B

> Ruby M17N $B$G$O!"0lO"$N=hM}$N7k2L$N(B encoding $B$r;XDj$9$k:]$K!"(B
> $B0z?t$N(B String#encodig $B$rMQ$$$k$H$$$&$3$H$O$7$P$7$P9T$o$l$^$9!#(B
> 
unescape$B$O(Bascii$B$+$i(Bascii$B$+$I$&$+$o$+$i$J$$J8;zNs$X$N%U%#%k%?$J$N$G(B
$B0z?t$N(Bencoding$B$O$"$F$K$G$-$J$$$H;W$C$F$$$^$9!#(B
Posted by Tanaka Akira (Guest)
on 04.09.2008 03:05
(Received via mailing list)
In article <48BEFFF0.4090403@rabbix.jp>,
  Fujioka <fuj@rabbix.jp> writes:

> $B$=$NItJ,$O2?$bJQ49$5$l$^$;$s!#(B
> $B%(%s%3!<%G%#%s%0$O(BASCII-8BIT$B$K$J$j$^$9!#(B

[ruby-dev:36138] $B$N<BAu$O(B ($B0z?t$,(B ASCII-8BIT 
$B0J30$GHs(BASCII$BJ8(B
$B;z$,F~$C$F$$$l$P(B) $BNc30$K$J$j$=$&$G$9$,!"$=$s$J$3$H$O$"$j$^$;(B
$B$s$+(B?
Posted by Fujioka (Guest)
on 04.09.2008 05:03
(Received via mailing list)
$BF#2,$G$9!#(B

>> $B$=$NItJ,$O2?$bJQ49$5$l$^$;$s!#(B
>> $B%(%s%3!<%G%#%s%0$O(BASCII-8BIT$B$K$J$j$^$9!#(B
> 
> [ruby-dev:36138] $B$N<BAu$O(B ($B0z?t$,(B ASCII-8BIT $B0J30$GHs(BASCII$BJ8(B
> $B;z$,F~$C$F$$$l$P(B) $BNc30$K$J$j$=$&$G$9$,!"$=$s$J$3$H$O$"$j$^$;(B
> $B$s$+(B?

$B$D$^$j(Bencoding$B$,4V0c$C$F$$$k>l9g$H$$$&$3$H$G$9$+!)(B
$B$=$N>l9g$ONc30$G$b$$$$$h$&$J!#!#!#(B
ASCII-8BIT$B$KJQ49$7$F$+$i=hM}$7$FNc30$r=P$5$J$$J}$,$$$$$G$7$g$&$+!)(B
Posted by Fujioka (Guest)
on 05.09.2008 07:22
(Received via mailing list)
$BF#2,$G$9!#(B

> $B$?$@!":#;W$C$F$$$k$N$O(BASCII$B0J30$O(BASCII-8BIT$B$K$J$k$N$O(B
> $B$"$s$^$j$@$H;W$C$F$$$F!"(BCGI.new$B$7$?$H$-$K%*%W%7%g%s$G(B
> $B4|BT$9$k(Bencoding$B$rEO$7$F$"$2$l$P(B
> $B<+F0E*$K(BUS-ASCII$B$+$=$l0J30$N>l9g$O$=$N(Bencoding$B$K(Bforce_encoding$B$7$F(B
> $B$"$2$k5!G=$,M_$7$$$H;W$C$F$$$^$9!#(B
> $B$^$@93AhCf$G$9$,!#(B
> 
$B$3$l$K$D$$$F$G$9$,!"(B
$B@.@%$5$s$H$d$j<h$j$r$7$?7k2L!"$d$O$j%X%C%@$N(Bcharset$B$r8+$F(B
$B$=$N(Bencoding$B$r$D$1$F$"$2$k$N$,6Z$@$m$&$H$$$&OC$K$J$j$^$7$?!#(B
Posted by Tanaka Akira (Guest)
on 09.09.2008 05:48
(Received via mailing list)
In article <48BF4FF3.3030606@rabbix.jp>,
  Fujioka <fuj@rabbix.jp> writes:

> $B$D$^$j(Bencoding$B$,4V0c$C$F$$$k>l9g$H$$$&$3$H$G$9$+!)(B

$B$$$(!#(Bencoding $B$H$7$F4V0c$C$F$$$J$/$F$b!#(B
Posted by Takeyuki Fujioka (Guest)
on 09.09.2008 11:59
(Received via mailing list)
$B%A%1%C%H(B #542 $B$,99?7$5$l$^$7$?!#(B (by Takeyuki Fujioka)

$B%9%F!<%?%9(B Open$B$+$i(BRejected$B$KJQ99(B

$B$$$:$l(Bencoding$B$N<+F0IUM?5!G=$rEk:\$9$k$H$$$&$3$H$G!"(B
$B$3$N%A%1%C%H$OJD$8$^$9!#(B
----------------------------------------
http://redmine.ruby-lang.org/issues/show/542
Posted by Tanaka Akira (Guest)
on 10.09.2008 07:01
(Received via mailing list)
In article <48C0C20E.4000307@rabbix.jp>,
  Fujioka <fuj@rabbix.jp> writes:

> $B@.@%$5$s$H$d$j<h$j$r$7$?7k2L!"$d$O$j%X%C%@$N(Bcharset$B$r8+$F(B
> $B$=$N(Bencoding$B$r$D$1$F$"$2$k$N$,6Z$@$m$&$H$$$&OC$K$J$j$^$7$?!#(B

$B%V%i%&%6$O$3$3$GMxMQ$G$-$k(B charset $B$r$D$1$F$/$l$k$s$G$7$g$&(B
$B$+(B?
Posted by Tietew (Guest)
on 10.09.2008 07:52
(Received via mailing list)
On Wed, 10 Sep 2008 13:51:26 +0900
In article <87ej3stx68.fsf@fsij.org>
[[ruby-dev:36239] Re: [Feature #542] cgi.rb : CGI::unescape return 
encoding]
Tanaka Akira <akr@fsij.org> wrote:

> In article <48C0C20E.4000307@rabbix.jp>,
>   Fujioka <fuj@rabbix.jp> writes:
> 
> > $B@.@%$5$s$H$d$j<h$j$r$7$?7k2L!"$d$O$j%X%C%@$N(Bcharset$B$r8+$F(B
> > $B$=$N(Bencoding$B$r$D$1$F$"$2$k$N$,6Z$@$m$&$H$$$&OC$K$J$j$^$7$?!#(B
> 
> $B%V%i%&%6$O$3$3$GMxMQ$G$-$k(B charset $B$r$D$1$F$/$l$k$s$G$7$g$&(B
> $B$+(B?

application/x-www-form-urlencoded $B$K$O$=$b$=$b(B charset 
$B$,$"$j$^$;$s$7!"(B
multipart/form-data $B$K$b(B charset 
$B$,IU$$$F$$$k$N$O8+$?$3$H$,$J$$$G$9!#(B
Posted by Fujioka (Guest)
on 10.09.2008 08:10
(Received via mailing list)
$BF#2,$G$9!#(B

>> $B@.@%$5$s$H$d$j<h$j$r$7$?7k2L!"$d$O$j%X%C%@$N(Bcharset$B$r8+$F(B
>> $B$=$N(Bencoding$B$r$D$1$F$"$2$k$N$,6Z$@$m$&$H$$$&OC$K$J$j$^$7$?!#(B
> 
> $B%V%i%&%6$O$3$3$GMxMQ$G$-$k(B charset $B$r$D$1$F$/$l$k$s$G$7$g$&(B
> $B$+(B?

$B$$$(!"$D$1$F$/$l$^$;$s!#(B
$B$"$/$^$G(BCGI$B%"%W%jB&$,4|BT$9$k$3$H$K$J$j$^$9!#(B

$B$G$b!"Nc$($P(BUTF-8$B$r4|BT$7$F$$$k%"%W%j$K(BEUC-JP$B$r%]%9%H$7$F(B
$BNc30$,5/$-$k$N$O9%$^$7$/$"$j$^$;$s$M!#9M$($^$9!#(B
Posted by Tietew (Guest)
on 10.09.2008 08:17
(Received via mailing list)
On Wed, 10 Sep 2008 14:33:34 +0900
In article <48C75DB4.5010908@rabbix.jp>
[[ruby-dev:36241] Re: [Feature #542] cgi.rb : CGI::unescape return 
encoding]
Fujioka <fuj@rabbix.jp> wrote:

> $B$G$b!"Nc$($P(BUTF-8$B$r4|BT$7$F$$$k%"%W%j$K(BEUC-JP$B$r%]%9%H$7$F(B
> $BNc30$,5/$-$k$N$O9%$^$7$/$"$j$^$;$s$M!#9M$($^$9!#(B

$B4|BT$7$F$$$k$N$H0c$&J8;z%;%C%H!"$"$k$$$O2u$l$?J8;zNs$rEO$7!"(BXSS$B$r5/$3$9(B
$B$H$$$&967b$,$"$k$N$G!"$`$7$mNc30$NJ}$,$"$j$,$?$$$+$b$7$l$^$;$s!#(B

begin
  cgi = CGI.new(:assume_encoding => 'UTF-8')
rescue CGI::InvalidEncodingError
  print "Status: 400 Bad Request\n\n"
  exit
end
Posted by Fujioka (Guest)
on 10.09.2008 09:48
(Received via mailing list)
$BF#2,$G$9!#(B

>>> $B@.@%$5$s$H$d$j<h$j$r$7$?7k2L!"$d$O$j%X%C%@$N(Bcharset$B$r8+$F(B
>>> $B$=$N(Bencoding$B$r$D$1$F$"$2$k$N$,6Z$@$m$&$H$$$&OC$K$J$j$^$7$?!#(B
>> $B%V%i%&%6$O$3$3$GMxMQ$G$-$k(B charset $B$r$D$1$F$/$l$k$s$G$7$g$&(B
>> $B$+(B?
> 
> application/x-www-form-urlencoded $B$K$O$=$b$=$b(B charset $B$,$"$j$^$;$s$7!"(B
> multipart/form-data $B$K$b(B charset $B$,IU$$$F$$$k$N$O8+$?$3$H$,$J$$$G$9!#(B
> 
encoding$B>pJs$O$b$i$($J$$$N$G!"4|BT$9$k$7$+$J$$$G$9!#(B
$B$@$+$i$H$$$C$F(BASCII-8BIT$B$+(BUS-ASCII$B$N$I$A$i$G$7$+(B
$B%G!<%?$rLc$($J$$$H$$$&$N$bLLE]$+$J$H;W$&$N$G$9$,!"(B
$B$I$&$7$?$i$$$$$H;W$$$^$9$+!)(B

$B%]%9%H$5$l$?%G!<%?$O(B

1.ASCII-8BIT $B$G$b$i$&!J8=>u!K(B
2.US-ASCII or ASCII-8BIT $B$G$b$i$&(B
3.$B4|BT$9$k(Bencoding$B$r7h$a$F!"(BUS-ASCII or 
$B4|BT$9$k(Bencoding$B$G$b$i$&(B
4.$B>e5-(B3$B$K2C$($F!"(Bencoding$B%A%'%C%/$r$*$3$J$C$F!"(Bencoding$B$,4V0c$C$F$$$k(B
  $B>l9g$O(Bnil$B$J$I$rJV$9(B

1$B$H(B2$B$OF|K\8l$N(BCGI$B%"%W%j$N=PNO$,LLE]$G$9!#(B
@cgi=CGI.new
$B$7$?$H$7$F!"%]%9%H$5$l$?%G!<%?$KF|K\8l$,F~$C$F$/$k$H(B
"$B%?%$%H%k(B:#{@cgi['title']}"
$B$3$l$,Nc30$G$9!#(B
$BF|K\8lJ8;zNs$H(BASCII-8BIT$B$,O"7k$G$-$J$$$?$a$G$9!#(B
$B$3$l$G$O;H$$$E$i$$$J$!$H;W$C$F%"%$%G%#%"$rLO:w$7$F$$$k:GCf$G$9!#(B
Posted by Tanaka Akira (Guest)
on 10.09.2008 20:39
(Received via mailing list)
In article <48C76705.5000202@rabbix.jp>,
  Fujioka <fuj@rabbix.jp> writes:

> encoding$B>pJs$O$b$i$($J$$$N$G!"4|BT$9$k$7$+$J$$$G$9!#(B
> $B$@$+$i$H$$$C$F(BASCII-8BIT$B$+(BUS-ASCII$B$N$I$A$i$G$7$+(B
> $B%G!<%?$rLc$($J$$$H$$$&$N$bLLE]$+$J$H;W$&$N$G$9$,!"(B
> $B$I$&$7$?$i$$$$$H;W$$$^$9$+!)(B

$B%"%W%j%1!<%7%g%s$,4|BT$9$k%(%s%3!<%G%#%s%0$r(B cgi.rb $B$K(B
$B65$($F$d$k$7$+$J$$$7!"$=$&$9$k$N$,NI$$$H;W$$$^$9!#(B

$B;EMM$H$7$F$O%V%i%&%6$,%G!<%?$rAw$C$F$/$k860x$H$J$C$?(B HTML $B$N(B
form $B$N(B accept-charset $B$r(B cgi.rb $B$K(B
$B65$($F$d$k(B ($B$H$$$&$3$H$K$7$F$*$/(B) 
$B$s$8$c$J$$$G$7$g$&$+!#(B

$B$^$!!"(Baccept-charset $B$K8B$i$:(B form 
$B$N>pJs$r65$($F$d$k$H$$$m(B
$B$$$m8!::$G$-$F$$$$$+$b$7$l$^$;$s$,!#(B
Posted by Fujioka (Guest)
on 11.09.2008 07:11
(Received via mailing list)
$BF#2,$G$9!#(B

Tanaka Akira $B$5$s$O=q$-$^$7$?(B:
>> encoding$B>pJs$O$b$i$($J$$$N$G!"4|BT$9$k$7$+$J$$$G$9!#(B
>> $B$@$+$i$H$$$C$F(BASCII-8BIT$B$+(BUS-ASCII$B$N$I$A$i$G$7$+(B
>> $B%G!<%?$rLc$($J$$$H$$$&$N$bLLE]$+$J$H;W$&$N$G$9$,!"(B
>> $B$I$&$7$?$i$$$$$H;W$$$^$9$+!)(B
> 
> $B%"%W%j%1!<%7%g%s$,4|BT$9$k%(%s%3!<%G%#%s%0$r(B cgi.rb $B$K(B
> $B65$($F$d$k$7$+$J$$$7!"$=$&$9$k$N$,NI$$$H;W$$$^$9!#(B
> 
$BN;2r$G$9!#(B

> $B;EMM$H$7$F$O%V%i%&%6$,%G!<%?$rAw$C$F$/$k860x$H$J$C$?(B HTML $B$N(B
> form $B$N(B accept-charset $B$r(B cgi.rb $B$K(B
> $B65$($F$d$k(B ($B$H$$$&$3$H$K$7$F$*$/(B) $B$s$8$c$J$$$G$7$g$&$+!#(B
> 
$BAw$i$l$F$/$k(BForm$B$K(Baccept-charset$B$r$D$1$F$b!"(B
IE$B$b(BFirefox$B$bBP1~$7$F$$$J$$$N$G!"<B<AL50UL#$@$H;W$$$^$9!#(B
hidden$BB0@-$G(Baccept-charset$B$rAw$k$H$$$&$3$H$G$9$+!)(B
$B$=$l$@$C$?$i8=<BE*$+$J!#(B
Posted by Tanaka Akira (Guest)
on 12.09.2008 21:29
(Received via mailing list)
In article <48C8A83E.8000200@rabbix.jp>,
  Fujioka <fuj@rabbix.jp> writes:

> $BAw$i$l$F$/$k(BForm$B$K(Baccept-charset$B$r$D$1$F$b!"(B
> IE$B$b(BFirefox$B$bBP1~$7$F$$$J$$$N$G!"<B<AL50UL#$@$H;W$$$^$9!#(B

$B8@MU$,B-$j$J$+$C$?$h$&$G$9!#(B

Web $B%5!<%P$,(B form $B$r4^$`(B HTML 
$B$rAw$C$?;~$K!"%V%i%&%6$,$I$N$h(B
$B$&$J(B charset $B$GJV;v$r(B Web $B%5!<%PJV$9$Y$-$+$r(B 
accept-charset
$B$N$h$&$JL@<(E*$J7A$d!"(BHTML $B<+BN$N(B encoding 
$B$H$7$F0EL[$J7A$G(B
$B;X<($7$F$$$k$N$G!"$=$N;X<($r(B cgi.rb $B$K65$($F$d$k$H$$$&0UL#$r(B
$B0U?^$7$F$$$^$7$?!#(B

$B$J$*!"<j85$N(B iceweasel 2.0.0.16 $B$O(B accept-charset 
$B$rM}2r$7$F(B
$B=>$&$h$&$G$9!#(B

> hidden$BB0@-$G(Baccept-charset$B$rAw$k$H$$$&$3$H$G$9$+!)(B
> $B$=$l$@$C$?$i8=<BE*$+$J!#(B

hidden$BB0@-$O9M$($F$$$^$;$s!#(B
Posted by Fujioka (Guest)
on 13.09.2008 18:05
(Received via mailing list)
$BF#2,$G$9!#(B

> Web $B%5!<%P$,(B form $B$r4^$`(B HTML $B$rAw$C$?;~$K!"%V%i%&%6$,$I$N$h(B
> $B$&$J(B charset $B$GJV;v$r(B Web $B%5!<%PJV$9$Y$-$+$r(B accept-charset
> $B$N$h$&$JL@<(E*$J7A$d!"(BHTML $B<+BN$N(B encoding $B$H$7$F0EL[$J7A$G(B
> $B;X<($7$F$$$k$N$G!"$=$N;X<($r(B cgi.rb $B$K65$($F$d$k$H$$$&0UL#$r(B
> $B0U?^$7$F$$$^$7$?!#(B
> 
> $B$J$*!"<j85$N(B iceweasel 2.0.0.16 $B$O(B accept-charset $B$rM}2r$7$F(B
> $B=>$&$h$&$G$9!#(B
> 
$B$d$O$j!"L@<(E*$K(Bcgi.rb$B$N%$%s%9%?%s%9$KEA$($F$*$$$?J}$,$h$5$=$&$G$9$M!#(B
$B%(%i!<=hM}$H$+2?$b$^$@$J$$$G$9$,!"(B
$B$H$j$"$($:2<$N%Q%C%A$G0J2<$N$h$&$J(BCGI$B%"%W%j$OF0$-$^$9!#(B
$B$3$NJ}?K$H$7$F$O$$$+$,$G$7$g$&$+!)!d$[$+$N0U8+$"$j$=$&$JJ}!9(B

$B$"$H!"%(%s%3!<%G%#%s%0$,0c$&J8;zNs$rAw$j$D$1$i$l$?>l9g$K(B
$B$I$&$9$k$+$G$9$,!"(B
1. $BJ|CV!J$*$=$i$/$I$3$+$GNc30$r5/$3$7$F;_$^$k!K(B
2. $B8!>Z$7$F$*$+$7$+$C$?$H$-$O(Bkey$B$4$HL5;k$9$k(B
3. 
$B8!>Z$7$F$*$+$7$+$C$?$H$-$O(Bkey$B$O$"$k$1$ICf?H$r(Bnil$B$K$9$k(B
4. 
$B8!>Z$7$F$*$+$7$+$C$?$H$-$O(Bvalue$B$r(BASCII-8BIT$B$K$7$F$7$^$&(B
4$B$,?F@Z$+$J$H;W$&$N$G$9$,!"$40U8+$h$m$7$/$*4j$$$7$^$9!#(B

#!/Users/fujioka/local/bin/ruby19
# vim:fileencoding=UTF-8
require 'cgi'
@cgi=CGI.new("html3","UTF-8")
@header = { "type" => "text/html", "charset" => "UTF-8" }

@cgi.out(@header) do
  @cgi.html do
    @cgi.head{@cgi.title{"$B$?$$$H$k(B"}}+
      @cgi.body do
        "$B7k2L(B:#{@cgi['title']}"+
          @cgi.form("action"=>@cgi.script_name) do
            @cgi.text_field("name"=>"title")+
            @cgi.hidden("name"=>"key","value"=>"value")+
              @cgi.submit("value"=>"OK")
          end
      end
  end
end

Index: lib/cgi/core.rb
===================================================================
--- lib/cgi/core.rb  (revision 19280)
+++ lib/cgi/core.rb  (working copy)
@@ -600,7 +600,7 @@

stdinput.read(Integer(env_table['CONTENT_LENGTH'])) or ''
                     else
                       read_from_cmdline
-                    end
+                    end.force_encoding(@encoding)
                   )
       end

@@ -667,7 +667,8 @@
   # from the command line or (failing that) from standard input.
Otherwise,
   # cookies and other parameters are parsed automatically from the 
standard
   # CGI locations, which varies according to the REQUEST_METHOD.
-  def initialize(type = "query")
+  def initialize(type = "query",encoding="ASCII-8BIT")
+    @encoding=encoding
     if defined?(MOD_RUBY) && !ENV.key?("GATEWAY_INTERFACE")
       Apache.request.setup_cgi_env
     end
Posted by Kazuhiro NISHIYAMA (Guest)
on 16.09.2008 10:41
(Received via mailing list)
$B@>;3OB9-$G$9!#(B

At Sun, 14 Sep 2008 00:27:27 +0900,
Fujioka wrote:
> 
> $B$"$H!"%(%s%3!<%G%#%s%0$,0c$&J8;zNs$rAw$j$D$1$i$l$?>l9g$K(B
> $B$I$&$9$k$+$G$9$,!"(B
> 1. $BJ|CV!J$*$=$i$/$I$3$+$GNc30$r5/$3$7$F;_$^$k!K(B
> 2. $B8!>Z$7$F$*$+$7$+$C$?$H$-$O(Bkey$B$4$HL5;k$9$k(B
> 3. $B8!>Z$7$F$*$+$7$+$C$?$H$-$O(Bkey$B$O$"$k$1$ICf?H$r(Bnil$B$K$9$k(B
> 4. $B8!>Z$7$F$*$+$7$+$C$?$H$-$O(Bvalue$B$r(BASCII-8BIT$B$K$7$F$7$^$&(B
> 4$B$,?F@Z$+$J$H;W$&$N$G$9$,!"$40U8+$h$m$7$/$*4j$$$7$^$9!#(B

$B%P%$%J%j%U%!%$%k$N%"%C%W%m!<%I$r$9$k$H$-$K(B2$B$d(B3$B$@$H:$$j$=$&$G$9!#(B
Posted by Tietew (Guest)
on 16.09.2008 11:20
(Received via mailing list)
On Tue, 16 Sep 2008 17:33:08 +0900
In article <85r67k4h6t.wl%zn@mbf.nifty.com>
[[ruby-dev:36321] Re: [Feature #542] cgi.rb : CGI::unescape return 
encoding]
Kazuhiro NISHIYAMA <zn@mbf.nifty.com> wrote:

> > $B$"$H!"%(%s%3!<%G%#%s%0$,0c$&J8;zNs$rAw$j$D$1$i$l$?>l9g$K(B
> > $B$I$&$9$k$+$G$9$,!"(B
> > 1. $BJ|CV!J$*$=$i$/$I$3$+$GNc30$r5/$3$7$F;_$^$k!K(B
> > 2. $B8!>Z$7$F$*$+$7$+$C$?$H$-$O(Bkey$B$4$HL5;k$9$k(B
> > 3. $B8!>Z$7$F$*$+$7$+$C$?$H$-$O(Bkey$B$O$"$k$1$ICf?H$r(Bnil$B$K$9$k(B
> > 4. $B8!>Z$7$F$*$+$7$+$C$?$H$-$O(Bvalue$B$r(BASCII-8BIT$B$K$7$F$7$^$&(B
> > 4$B$,?F@Z$+$J$H;W$&$N$G$9$,!"$40U8+$h$m$7$/$*4j$$$7$^$9!#(B
> 
> $B%P%$%J%j%U%!%$%k$N%"%C%W%m!<%I$r$9$k$H$-$K(B2$B$d(B3$B$@$H:$$j$=$&$G$9!#(B

multipart/form-data $B$G!"$+$D(B Content-Disposition filename 
$B$r;}$C$F$$$l$P(B
ASCII-8BIT $B$G!"$=$&$G$J$1$l$P8!>Z!!$H$+!#(B
Posted by Fujioka (Guest)
on 16.09.2008 14:19
(Received via mailing list)
$BF#2,$G$9!#(B

>> $B$"$H!"%(%s%3!<%G%#%s%0$,0c$&J8;zNs$rAw$j$D$1$i$l$?>l9g$K(B
>> $B$I$&$9$k$+$G$9$,!"(B
>> 1. $BJ|CV!J$*$=$i$/$I$3$+$GNc30$r5/$3$7$F;_$^$k!K(B
>> 2. $B8!>Z$7$F$*$+$7$+$C$?$H$-$O(Bkey$B$4$HL5;k$9$k(B
>> 3. $B8!>Z$7$F$*$+$7$+$C$?$H$-$O(Bkey$B$O$"$k$1$ICf?H$r(Bnil$B$K$9$k(B
>> 4. $B8!>Z$7$F$*$+$7$+$C$?$H$-$O(Bvalue$B$r(BASCII-8BIT$B$K$7$F$7$^$&(B
>> 4$B$,?F@Z$+$J$H;W$&$N$G$9$,!"$40U8+$h$m$7$/$*4j$$$7$^$9!#(B
> 
> $B%P%$%J%j%U%!%$%k$N%"%C%W%m!<%I$r$9$k$H$-$K(B2$B$d(B3$B$@$H:$$j$=$&$G$9!#(B
> 
$B%U%!%$%k$O<u<h(Bencoding$B$,;XDj$5$l$F$$$F$b(BASCII-8BIT$B$,(B
$BE,@Z$8$c$J$$$+$H;W$$$^$9!#(B
$B%U%!%$%k0J30$NOC$@$C$?$i#2$H$+#3$O$$$+$,$G$7$g$&!)(B
Posted by NARUSE, Yui (Guest)
on 16.09.2008 15:16
(Received via mailing list)
$B@.@%$G$9!#(B

Fujioka wrote:
> $B$"$H!"%(%s%3!<%G%#%s%0$,0c$&J8;zNs$rAw$j$D$1$i$l$?>l9g$K(B
> $B$I$&$9$k$+$G$9$,!"(B
> 1. $BJ|CV!J$*$=$i$/$I$3$+$GNc30$r5/$3$7$F;_$^$k!K(B
> 2. $B8!>Z$7$F$*$+$7$+$C$?$H$-$O(Bkey$B$4$HL5;k$9$k(B
> 3. $B8!>Z$7$F$*$+$7$+$C$?$H$-$O(Bkey$B$O$"$k$1$ICf?H$r(Bnil$B$K$9$k(B
> 4. $B8!>Z$7$F$*$+$7$+$C$?$H$-$O(Bvalue$B$r(BASCII-8BIT$B$K$7$F$7$^$&(B
> 4$B$,?F@Z$+$J$H;W$&$N$G$9$,!"$40U8+$h$m$7$/$*4j$$$7$^$9!#(B

5. $B$+$^$o$:;XDj$5$l$?(B encoding $B$r$D$1$k(B

$B$8$c$J$$$G$9$+$M!#(B
String#valid_encoding? 
$B$GD4$Y$k$H$+!"8e$GBP=h$9$kJ}K!$O$"$k$N$G$9$+$i!#(B
Posted by NARUSE, Yui (Guest)
on 16.09.2008 15:16
(Received via mailing list)
$B@.@%$G$9!#(B

Fujioka wrote:
> $BE,@Z$8$c$J$$$+$H;W$$$^$9!#(B
> $B%U%!%$%k0J30$NOC$@$C$?$i#2$H$+#3$O$$$+$,$G$7$g$&!)(B

$B%P%$%J%j%U%!%$%k$@$C$?$i(B ASCII-8BIT $B$,$h$$$G$9$7!"(B
$B%F%-%9%H%U%!%$%k$J$i%(%s%3!<%G%#%s%08GDj$+$b$7$l$J$$$o$1$G!"(B
$B$3$l$bJLES<u$1<h$j(B encoding $B$r;XDj$5$;$k$Y$-$G$7$g$&!#(B
Posted by Tietew (Guest)
on 17.09.2008 04:31
(Received via mailing list)
On Tue, 16 Sep 2008 21:37:12 +0900
In article <48CFAA31.1080709@airemix.jp>
[[ruby-dev:36332] Re: [Feature #542] cgi.rb : CGI::unescape return 
encoding]
"NARUSE, Yui" <naruse@airemix.jp> wrote:

> 5. $B$+$^$o$:;XDj$5$l$?(B encoding $B$r$D$1$k(B
> 
> $B$8$c$J$$$G$9$+$M!#(B
> String#valid_encoding? $B$GD4$Y$k$H$+!"8e$GBP=h$9$kJ}K!$O$"$k$N$G$9$+$i!#(B

bad knowhow $B$K$J$j$=$&$GI]$$$G$9!#(B

cgi = CGI.new('UTF-8')
unless cgi.param.join.valid_encoding?
  print cgi.header('status' => '400 Bad Request')
  print 'Bad Request'
  exit
end

$BEy$N%3!<%I$rKhEY=q$/$+26%i%$%V%i%j$K$9$kI,MW$,$"$k$o$1$G!#(B
Posted by Fujioka (Guest)
on 17.09.2008 04:57
(Received via mailing list)
$BF#2,$G$9!#(B

>> 5. $B$+$^$o$:;XDj$5$l$?(B encoding $B$r$D$1$k(B
>>
>> $B$8$c$J$$$G$9$+$M!#(B
>> String#valid_encoding? $B$GD4$Y$k$H$+!"8e$GBP=h$9$kJ}K!$O$"$k$N$G$9$+$i!#(B
> 
> bad knowhow $B$K$J$j$=$&$GI]$$$G$9!#(B
> 
bad knowhow$B$K$J$k$0$i$$$@$C$?$i<BAu$7$?$$$G$9$M!#(B

> cgi = CGI.new('UTF-8')
> unless cgi.param.join.valid_encoding?
>   print cgi.header('status' => '400 Bad Request')
>   print 'Bad Request'
>   exit
> end
> 
> $BEy$N%3!<%I$rKhEY=q$/$+26%i%$%V%i%j$K$9$kI,MW$,$"$k$o$1$G!#(B
> 
$B$3$l$@$H(BEUC-JP$B$H(BUTF-8$B$rAw$j$D$1$i$l$?$H$-$K(Bjoin$B$N;~E@$GNc30$J$h$&$J!#(B
$B$H$$$&OC$O$5$F$*$-!"(B
new$B$9$k$H$-$N%*%W%7%g%s$G4|BT$9$k5sF0$r@Z$jBX$($i$l$k$H(B
$B;H$$$d$9$$$G$7$g$&$+$M!)(B

cgi=CGI.new(:encoding=>"UTF-8",:element_encoding_check=>true)

$B$_$?$$$K!#(B
Posted by Tietew (Guest)
on 17.09.2008 05:33
(Received via mailing list)
On Wed, 17 Sep 2008 11:49:12 +0900
In article <48D071E7.1090907@rabbix.jp>
[[ruby-dev:36342] Re: [Feature #542] cgi.rb : CGI::unescape return 
encoding]
Fujioka <fuj@rabbix.jp> wrote:

> 
> > cgi = CGI.new('UTF-8')
> > unless cgi.param.join.valid_encoding?
> >   print cgi.header('status' => '400 Bad Request')
> >   print 'Bad Request'
> >   exit
> > end
> > 
> > $BEy$N%3!<%I$rKhEY=q$/$+26%i%$%V%i%j$K$9$kI,MW$,$"$k$o$1$G!#(B
> > 
> $B$3$l$@$H(BEUC-JP$B$H(BUTF-8$B$rAw$j$D$1$i$l$?$H$-$K(Bjoin$B$N;~E@$GNc30$J$h$&$J!#(B

force_encoding $B$5$l$F$$$k!"$H$$$&A0Ds$J$N$G!"Nc30$O$J$$$O$:!#(B

> new$B$9$k$H$-$N%*%W%7%g%s$G4|BT$9$k5sF0$r@Z$jBX$($i$l$k$H(B
> $B;H$$$d$9$$$G$7$g$&$+$M!)(B
> 
> cgi=CGI.new(:encoding=>"UTF-8",:element_encoding_check=>true)

$B%G%U%)%k%H%A%'%C%/$r4uK>!#(B
$B:.:_$7$?(Bor$BIT@5$J%(%s%3!<%G%#%s%0$r<u$1IU$1$k$3$H$NJ}$,Nc30E*$@$H;W$$$^$9!#(B
$B%"%C%W%m!<%I$5$l$?%P%$%J%j$O$b$H$b$H=|30$JLu$G!#(B
Posted by Fujioka (Guest)
on 19.09.2008 02:58
(Received via mailing list)
$BF#2,$G$9!#(B

>>>   print cgi.header('status' => '400 Bad Request')
>> new$B$9$k$H$-$N%*%W%7%g%s$G4|BT$9$k5sF0$r@Z$jBX$($i$l$k$H(B
>> $B;H$$$d$9$$$G$7$g$&$+$M!)(B
>>
>> cgi=CGI.new(:encoding=>"UTF-8",:element_encoding_check=>true)
> 
> $B%G%U%)%k%H%A%'%C%/$r4uK>!#(B
> $B:.:_$7$?(Bor$BIT@5$J%(%s%3!<%G%#%s%0$r<u$1IU$1$k$3$H$NJ}$,Nc30E*$@$H;W$$$^$9!#(B
> $B%"%C%W%m!<%I$5$l$?%P%$%J%j$O$b$H$b$H=|30$JLu$G!#(B
> 
$B;d$H$7$F$O%A%'%C%/$rF~$l$?J}$,$$$$$H;W$C$F$$$^$9!#(B
cgi=CGI.new(:encoding=>"UTF-8",:element_encoding_check=>false)
$B$3$s$J46$8$G$G$-$k$H3Z$+$J$H!#(B
$B%U%!%$%k$K4X$7$F$O$9$Y$F(BASCII-8BIT$B$,$$$$$H;W$C$F$$$^$9!#(B
Posted by Fujioka (Guest)
on 21.09.2008 08:26
(Received via mailing list)
$BF#2,$G$9!#(B

> $B;d$H$7$F$O%A%'%C%/$rF~$l$?J}$,$$$$$H;W$C$F$$$^$9!#(B
> cgi=CGI.new(:encoding=>"UTF-8",:element_encoding_check=>false)
> $B$3$s$J46$8$G$G$-$k$H3Z$+$J$H!#(B
> $B%U%!%$%k$K4X$7$F$O$9$Y$F(BASCII-8BIT$B$,$$$$$H;W$C$F$$$^$9!#(B
> 
* CGI.new$B$N%*%W%7%g%s$G(BHash$B$b<h$l$k$h$&$K$9$k(B
 $B!J8=>u$O(B"html3"$B$J$I$N(BString$B$N$_!K(B
* 
CGI$B$K(B@@encoding$B$H$$$&%/%i%9JQ?t$rMQ0U$7!"(Bdefault$BCM$O(B"UTF-8"$B$H$9$k(B
* CGI::encoding$B$H(BCGI::encoding=$B$H$$$&%a%=%C%I$rMQ0U$7!"(B
 @@encoding$B$N%;%C%?!<$H%2%C%?!<$K$9$k(B
* CGI.new$B$5$l$?$H$-$K%*%W%7%g%s$G(B
 CGI.new(:encoding=>"EUC-JP")$B$J$I$H;XDj$5$l$J$$>l9g$O(B
 @@encoding$B$NCM$r(B@encoding$B$KBeF~$9$k(B
* 
$B3F!9$N%(%l%a%s%H$NCM$O(B@encoding$B$NCM$G(Bforce_encoding$B$7!"(B
 valid_encoding?$B$9$k!#$?$@$7!"(Bfile$B$@$1$O(BASCII-8BIT$B$H$9$k!#(B
* 
$B%*%W%7%g%s$N$H$-$K(B:element_encoding_check=>false$B$,M?$($i$l$?$H$-$O(B
 $B%(%s%3!<%G%#%s%0%A%'%C%/$7$J$$!#(B
* encoding$B$N%A%'%C%/$r$7$F@5$7$/$J$$>l9g$O(BASCII-8BIT$B$K(B
 force_encoding$B$7$F$7$^$&(B

$B0J>e$N$h$&$J;EMM$G$O$$$+$,$G$7$g$&$+!)(B
$B%5%s%W%k%Y!<%9$G9T$/$H!"(B

require 'cgi'
@cgi=CGI.new("html3")

$B$H$d$C$?>l9g$O<u$1<h$C$?CM$O(BUTF-8$B$H$_$J$7!"(Bencoding$B$N%A%'%C%/$rF~$l$k!#(B
$B%?%0%a!<%+!<$O(Bhtml3$B$H$9$k!#(B
EUC-JP$B$K$9$k>l9g$O(B

require 'cgi'
CGI::encoding="EUC-JP"
@cgi=CGI.new("html3")

$B$b$7$/$O(B

require 'cgi'
@cgi=CGI.new(:tag_maker=>"html3",:encoding=>"EUC-JP")

$B$H$9$k!#%(%s%3!<%G%#%s%0$N%A%'%C%/$r$7$J$$>l9g$O(B

require 'cgi'
@cgi=CGI.new(:tag_maker=>"html3",:encoding=>"EUC-JP",:element_encoding_check=>false)

$B$H$$$C$?$h$&$K%$%s%9%?%s%9$X%*%W%7%g%s$GEO$9!#(B
$B0J>e$N$h$&$J;H$$>!<j$K$J$j$^$9!#(B
Posted by Kazuhiro NISHIYAMA (Guest)
on 21.09.2008 14:58
(Received via mailing list)
$B@>;3OB9-$G$9!#(B

At Sun, 21 Sep 2008 15:17:28 +0900,
Fujioka wrote:
> 
> * $B3F!9$N%(%l%a%s%H$NCM$O(B@encoding$B$NCM$G(Bforce_encoding$B$7!"(B
>  valid_encoding?$B$9$k!#$?$@$7!"(Bfile$B$@$1$O(BASCII-8BIT$B$H$9$k!#(B

$B%U%!%$%k$+$I$&$+$O$I$&$d$C$FH=CG$9$k$N$G$7$g$&$+(B?
Posted by Fujioka (Guest)
on 21.09.2008 17:06
(Received via mailing list)
$BF#2,$G$9!#(B

> At Sun, 21 Sep 2008 15:17:28 +0900,
> Fujioka wrote:
>> * $B3F!9$N%(%l%a%s%H$NCM$O(B@encoding$B$NCM$G(Bforce_encoding$B$7!"(B
>>  valid_encoding?$B$9$k!#$?$@$7!"(Bfile$B$@$1$O(BASCII-8BIT$B$H$9$k!#(B
> 
> $B%U%!%$%k$+$I$&$+$O$I$&$d$C$FH=CG$9$k$N$G$7$g$&$+(B?
> 
finename$B$,$"$C$?$i(BASCII-8BIT$B8GDj$K$9$k$N$,$$$$$+$J$H;W$C$F$$$^$9!#(B
$B%U%!%$%k$bFCJL07$$$7$J$$J}$,$$$$$H;W$$$^$9$+!)(B
Posted by NARUSE, Yui (Guest)
on 21.09.2008 18:07
(Received via mailing list)
$B@.@%$G$9!#(B

Fujioka $B$5$s$O=q$-$^$7$?(B:
> $BF#2,$G$9!#(B
> 
>> At Sun, 21 Sep 2008 15:17:28 +0900,
>> Fujioka wrote:
>>> * $B3F!9$N%(%l%a%s%H$NCM$O(B@encoding$B$NCM$G(Bforce_encoding$B$7!"(B
>>>  valid_encoding?$B$9$k!#$?$@$7!"(Bfile$B$@$1$O(BASCII-8BIT$B$H$9$k!#(B
>> $B%U%!%$%k$+$I$&$+$O$I$&$d$C$FH=CG$9$k$N$G$7$g$&$+(B?
>>
> finename$B$,$"$C$?$i(BASCII-8BIT$B8GDj$K$9$k$N$,$$$$$+$J$H;W$C$F$$$^$9!#(B
> $B%U%!%$%k$bFCJL07$$$7$J$$J}$,$$$$$H;W$$$^$9$+!)(B

Content-Type $B$r8+$l$P%G!<%?$,J8;zNs$+%P%$%J%j$+$O$o$+$k$N$G!"(B
$B$=$l$r8+$k$N$,$$$$$N$G$O$J$$$G$7$g$&$+!#(B
Posted by Fujioka (Guest)
on 21.09.2008 18:21
(Received via mailing list)
$BF#2,$G$9!#(B

>> finename$B$,$"$C$?$i(BASCII-8BIT$B8GDj$K$9$k$N$,$$$$$+$J$H;W$C$F$$$^$9!#(B
>> $B%U%!%$%k$bFCJL07$$$7$J$$J}$,$$$$$H;W$$$^$9$+!)(B
> 
> Content-Type $B$r8+$l$P%G!<%?$,J8;zNs$+%P%$%J%j$+$O$o$+$k$N$G!"(B
> $B$=$l$r8+$k$N$,$$$$$N$G$O$J$$$G$7$g$&$+!#(B
> 
$BEj9F$7$F$+$i;d$b$=$N$[$&$,$$$$$J$H;W$C$F$$$^$7$?!#(B
Content-Type$B$r8+$k$h$&$K:n$C$F$_$^$9!#(B
Posted by Kazuhiro NISHIYAMA (Guest)
on 21.09.2008 18:30
(Received via mailing list)
$B@>;3OB9-$G$9!#(B

At Mon, 22 Sep 2008 01:11:44 +0900,
Fujioka wrote:
> 
> >> finename$B$,$"$C$?$i(BASCII-8BIT$B8GDj$K$9$k$N$,$$$$$+$J$H;W$C$F$$$^$9!#(B
> >> $B%U%!%$%k$bFCJL07$$$7$J$$J}$,$$$$$H;W$$$^$9$+!)(B
> > 
> > Content-Type $B$r8+$l$P%G!<%?$,J8;zNs$+%P%$%J%j$+$O$o$+$k$N$G!"(B
> > $B$=$l$r8+$k$N$,$$$$$N$G$O$J$$$G$7$g$&$+!#(B
> > 
> $BEj9F$7$F$+$i;d$b$=$N$[$&$,$$$$$J$H;W$C$F$$$^$7$?!#(B
> Content-Type$B$r8+$k$h$&$K:n$C$F$_$^$9!#(B

$B<u$1<h$k(BCGI$BB&$G$O$J$/Aw$k(BUser-Agent$BB&$G(BASCII-8BIT$B$K$J$k$+$I$&$+(B
$B7h$a$i$l$k$H8@$&$3$H$O!"(Bencoding$B$N%A%'%C%/$r$9$jH4$1$i$l$k%j%/%(%9%H$r(B
$BAw$j$D$1$i$l$k$H8@$&$3$H$K$J$j$=$&$G$9$,!"%;%-%e%j%F%#E*$KLdBj$O(B
$B$J$$$N$G$7$g$&$+(B?
Posted by Fujioka (Guest)
on 21.09.2008 19:23
(Received via mailing list)
$BF#2,$G$9!#(B

> $BAw$j$D$1$i$l$k$H8@$&$3$H$K$J$j$=$&$G$9$,!"%;%-%e%j%F%#E*$KLdBj$O(B
> $B$J$$$N$G$7$g$&$+(B?
> 
$B%(%s%3!<%G%#%s%0$N%A%'%C%/$O$"$/$^$G;H$$>!<j$NLdBj$NOC$G$"$C$F(B
$B%;%-%e%j%F%#%A%'%C%/$N$D$b$j$O$J$+$C$?$N$G!"LdBj$J$$$H;W$C$F$$$^$7$?!#(B
$B8=>u$N(Bcgi.rb$B$G$O%(%s%3!<%G%#%s%0%A%'%C%/$OB8:_$;$:!"(B
$BAw$j$D$1$i$l$?$b$N$O%*%V%8%'%/%H$r@8@.$7$^$9!#(B
$B$3$l$r%A%'%C%/$9$k$H$7$?$i!"(B
CGI.new$B$G%*%W%F%g%s$rEO$7$F<u$1<h$k%(%l%a%s%H$H%(%s%3!<%G%#%s%0$r(B
$BC`0l;XDj$9$kI,MW$,=P$F$-$^$9!#(B
$B$=$&$J$k$H;H$$>!<j$,0-$$$+$J$H;W$C$F$$$^$9!#(B
Posted by Tietew (Guest)
on 22.09.2008 04:05
(Received via mailing list)
On Mon, 22 Sep 2008 01:11:44 +0900
In article <48D67424.2060409@rabbix.jp>
[[ruby-dev:36430] Re: [Feature #542] cgi.rb : CGI::unescape return 
encoding]
Fujioka <fuj@rabbix.jp> wrote:

> $BEj9F$7$F$+$i;d$b$=$N$[$&$,$$$$$J$H;W$C$F$$$^$7$?!#(B
> Content-Type$B$r8+$k$h$&$K:n$C$F$_$^$9!#(B
> 
$BDL>o$N%U%#!<%k%I$G$O(BContent-Type$B$OEO$5$l$^$;$s$,!"%U%!%$%k$N>l9g$O(B
Content-Type:text/plain $B$J$s$F$3$H$b$"$jF@$^$9!#(B
Content-Type$B$NM-L5$O?.Mj@-$,$J$$$H;W$$$^$9!#(B
Posted by Tietew (Guest)
on 22.09.2008 04:07
(Received via mailing list)
On Sun, 21 Sep 2008 15:17:28 +0900
In article <48D5E8D8.2030205@rabbix.jp>
[[ruby-dev:36422] Re: [Feature #542] cgi.rb : CGI::unescape return 
encoding]
Fujioka <fuj@rabbix.jp> wrote:

> * encoding$B$N%A%'%C%/$r$7$F@5$7$/$J$$>l9g$O(BASCII-8BIT$B$K(B
>  force_encoding$B$7$F$7$^$&(B

$BNc30$r5/$3$9$+!"2?$i$+$N7A$G!VIT@5%(%s%3!<%G%#%s%0$r8!=P$7$?!W$H$$$&$3$H(B
$B$r8!=P$G$-$kJ}K!$,M_$7$$$G$9!#(B

# $BIT@5%(%s%3!<%G%#%s%0$r8!=P$7$?$i(B 400 
$BEy$N%9%F!<%?%9$GB(=*N;!#(B
Posted by Fujioka (Guest)
on 22.09.2008 04:31
(Received via mailing list)
$BF#2,$G$9!#(B

>> $BEj9F$7$F$+$i;d$b$=$N$[$&$,$$$$$J$H;W$C$F$$$^$7$?!#(B
>> Content-Type$B$r8+$k$h$&$K:n$C$F$_$^$9!#(B
>>
> $BDL>o$N%U%#!<%k%I$G$O(BContent-Type$B$OEO$5$l$^$;$s$,!"%U%!%$%k$N>l9g$O(B 
> Content-Type:text/plain $B$J$s$F$3$H$b$"$jF@$^$9!#(B
> Content-Type$B$NM-L5$O?.Mj@-$,$J$$$H;W$$$^$9!#(B
> 
Content-Type$B$,$"$l$P%U%!%$%k$H$_$J$9$D$b$j$G$7$?!#(B


>> * encoding$B$N%A%'%C%/$r$7$F@5$7$/$J$$>l9g$O(BASCII-8BIT$B$K(B
>>  force_encoding$B$7$F$7$^$&(B
>
> $BNc30$r5/$3$9$+!"2?$i$+$N7A$G!VIT@5%(%s%3!<%G%#%s%0$r8!=P$7$?!W$H$$$&$3$H(B
> $B$r8!=P$G$-$kJ}K!$,M_$7$$$G$9!#(B
>
> # $BIT@5%(%s%3!<%G%#%s%0$r8!=P$7$?$i(B 400 $BEy$N%9%F!<%?%9$GB(=*N;!#(B
>
$BB(=*N;$9$k$N$O$=$N$h$&$K%3!<%G%#%s%0$7$F$b$i$&$H$7$F!"(B
$B2?$i$+$N7A$NItJ,$N4uK>$O$"$j$^$9$+!)(B
$BNc$($P(B@encoding_errors$B$N(Barray$B$r:n$C$F9`L\L>$r%W%C%7%e$9$k$H$+(B
Posted by Tietew (Guest)
on 22.09.2008 12:04
(Received via mailing list)
On Mon, 22 Sep 2008 11:22:44 +0900
In article <48D7035D.3020404@rabbix.jp>
[[ruby-dev:36436] Re: [Feature #542] cgi.rb : CGI::unescape return 
encoding]
Fujioka <fuj@rabbix.jp> wrote:

> >> $BEj9F$7$F$+$i;d$b$=$N$[$&$,$$$$$J$H;W$C$F$$$^$7$?!#(B
> >> Content-Type$B$r8+$k$h$&$K:n$C$F$_$^$9!#(B
> >>
> > $BDL>o$N%U%#!<%k%I$G$O(BContent-Type$B$OEO$5$l$^$;$s$,!"%U%!%$%k$N>l9g$O(B 
> > Content-Type:text/plain $B$J$s$F$3$H$b$"$jF@$^$9!#(B
> > Content-Type$B$NM-L5$O?.Mj@-$,$J$$$H;W$$$^$9!#(B
> > 
> Content-Type$B$,$"$l$P%U%!%$%k$H$_$J$9$D$b$j$G$7$?!#(B

Content-Type $B$NM-L5$G%U%!%$%k$+H]$+$O8!=P$G$-$J$+$C$?$h$&$J!#(B


> $BNc$($P(B@encoding_errors$B$N(Barray$B$r:n$C$F9`L\L>$r%W%C%7%e$9$k$H$+(B
$B8D?ME*$K$O!"$I$N%U%#!<%k%I$,IT@5$J$N$+$H$$$&$3$H$K6=L#$O$J$$$N$G!"(B
true/false $B$,JV$kDxEY$G9=$$$^$;$s!#B>$N?M$N0U8+$bJ9$-$?$$$G$9!#(B

$BH4$17j$rKI$0$H$$$&0UL#$G$ONc30$NJ}$,$$$$$N$+$J$"!#(B
Posted by Kazuhiro NISHIYAMA (Guest)
on 22.09.2008 12:28
(Received via mailing list)
$B@>;3OB9-$G$9!#(B

At Mon, 22 Sep 2008 18:55:07 +0900,
Tietew wrote:
> > $B2?$i$+$N7A$NItJ,$N4uK>$O$"$j$^$9$+!)(B
> > $BNc$($P(B@encoding_errors$B$N(Barray$B$r:n$C$F9`L\L>$r%W%C%7%e$9$k$H$+(B
> 
> $B8D?ME*$K$O!"$I$N%U%#!<%k%I$,IT@5$J$N$+$H$$$&$3$H$K6=L#$O$J$$$N$G!"(B
> true/false $B$,JV$kDxEY$G9=$$$^$;$s!#B>$N?M$N0U8+$bJ9$-$?$$$G$9!#(B
> 
> $BH4$17j$rKI$0$H$$$&0UL#$G$ONc30$NJ}$,$$$$$N$+$J$"!#(B

$BIT@5%(%s%3!<%G%#%s%0$r8!=P$7$?$H$-$K<B9T$9$k%V%m%C%/$r;XDj$G$-$k(B
$B$h$&$K$7$F!";XDj$,$J$+$C$?>l9g$N%G%U%)%k%H$ONc30$G!"$I$N%U%#!<%k%I$+(B
$BCN$j$?$1$l$P$=$3$G;D$9$h$&$K$9$k$H$+(B?
Posted by Tanaka Akira (Guest)
on 22.09.2008 12:38
(Received via mailing list)
In article <20080922175752.2734.FC96BA9B@tietew.net>,
  Tietew <tietew@tietew.net> writes:

> $B8D?ME*$K$O!"$I$N%U%#!<%k%I$,IT@5$J$N$+$H$$$&$3$H$K6=L#$O$J$$$N$G!"(B
> true/false $B$,JV$kDxEY$G9=$$$^$;$s!#B>$N?M$N0U8+$bJ9$-$?$$$G$9!#(B
>
> $BH4$17j$rKI$0$H$$$&0UL#$G$ONc30$NJ}$,$$$$$N$+$J$"!#(B

$BIaDL$ONc30$G!"<+J,$G3N$+$a$k$H$$$&$R$H$N$?$a$K8!::$7$J$$A*Br(B
$B;h$r$D$1$k!"$H$$$&$"$?$j$8$c$J$$$G$9$+!#(B

CGI.new(:accept_encoding=>"...",
  "name1"=>:file,
  "name2"=>...)

$B$G!"8!::$7$J$$$J$i(B

CGI.new(:accept_encoding=>:no_validation,
  "name1"=>:file,
  "name2"=>...)

$B$H$+!#(B
Posted by Tanaka Akira (Guest)
on 22.09.2008 12:57
(Received via mailing list)
In article <877i94v53d.fsf@fsij.org>,
  Tanaka Akira <akr@fsij.org> writes:

> $B$G!"8!::$7$J$$$J$i(B
>
> CGI.new(:accept_encoding=>:no_validation,

$B8!::$7$J$$$J$i(B "ASCII-8BIT" $B$r;XDj$9$k$@$1$G$$$$$+$b!#(B
Posted by Fujioka (Guest)
on 22.09.2008 13:31
(Received via mailing list)
$BF#2,$G$9!#(B

>> $B8D?ME*$K$O!"$I$N%U%#!<%k%I$,IT@5$J$N$+$H$$$&$3$H$K6=L#$O$J$$$N$G!"(B
>> true/false $B$,JV$kDxEY$G9=$$$^$;$s!#B>$N?M$N0U8+$bJ9$-$?$$$G$9!#(B
>>
>> $BH4$17j$rKI$0$H$$$&0UL#$G$ONc30$NJ}$,$$$$$N$+$J$"!#(B
> 
> $BIT@5%(%s%3!<%G%#%s%0$r8!=P$7$?$H$-$K<B9T$9$k%V%m%C%/$r;XDj$G$-$k(B
> $B$h$&$K$7$F!";XDj$,$J$+$C$?>l9g$N%G%U%)%k%H$ONc30$G!"$I$N%U%#!<%k%I$+(B
> $BCN$j$?$1$l$P$=$3$G;D$9$h$&$K$9$k$H$+(B?
> 
$B$3$l!"%3!<%I$N%5%s%W%k$r:n$l$^$;$s$G$7$g$&$+!)(B
$B$3$s$JIw$K;H$$$?$$$_$?$$$J$d$D!#(B
Posted by Fujioka (Guest)
on 22.09.2008 13:45
(Received via mailing list)
$BF#2,$G$9!#(B

> $B$H$+!#(B
$B$3$s$J46$8$G9`L\Kh$K%A%'%C%/$rMW5a$9$k$H!"(B
$B:#$"$k%&%'%V%"%W%j!J(BtDiary$B$d(BHiki$B$J$I$b4^$`!K$O(B
$B8.JB$_@_7W$r$7D>$7$K$J$k$H;W$$$^$9!#(B
$BM}M3$O$?$$$F$$$N%"%W%j$O(Bcgi=CGI.new$B$r%"%W%j$N:G=i$K$d$C$F$*$$$F!"(B
$B$=$l$+$i(Bcgi$B$r0z$-2s$9@_7W$K$J$C$F$$$k$+$i$G$9!#(B
$B$^$?!"(BCGI.new$B$7$?$H$-$K%/%(%j$r%Q!<%9$7$F$$$k$N$G$9$,!"(B
CGI.new$B$9$kA0$K(BURL$B$O$o$+$C$F$$$^$;$s$N$G!"(B
$B$I$N9`L\$r<u$1<h$l$k$h$&$K$9$k$+$rCN$i$;$k$3$H$,:$Fq$G$9!#(B
$B$@$+$i$H$$$C$F!"%&%'%V%"%W%j$G;H$&9`L\$rA4It=q$/$N$b(B
$B8=<BE*$G$O$"$j$^$;$s$7!"F0E*$JL>A0$,<u$1IU$1$i$l$J$$$N$b:$$j$^$9!#(B
$B$=$N$?$a!";d$O3F9`L\L>Kh$N%A%'%C%/$OF~$l$?$/$"$j$^$;$s!#(B
$B%;%-%e%j%F%#E*$KLdBj$@$H$7$?$i!"MFNL%A%'%C%/$d(B
$B9`L\?t$N>e8B$r@_Dj$9$kJ}$,!"(B
$B;H$$>!<j$NLL$G$$$$$N$G$O$J$$$+$H;W$C$F$$$^$9!#(B
Posted by Kazuhiro NISHIYAMA (Guest)
on 22.09.2008 15:24
(Received via mailing list)
$B@>;3OB9-$G$9!#(B

At Mon, 22 Sep 2008 20:17:26 +0900,
Fujioka wrote:
> 
> > $BIT@5%(%s%3!<%G%#%s%0$r8!=P$7$?$H$-$K<B9T$9$k%V%m%C%/$r;XDj$G$-$k(B
> > $B$h$&$K$7$F!";XDj$,$J$+$C$?>l9g$N%G%U%)%k%H$ONc30$G!"$I$N%U%#!<%k%I$+(B
> > $BCN$j$?$1$l$P$=$3$G;D$9$h$&$K$9$k$H$+(B?
> > 
> $B$3$l!"%3!<%I$N%5%s%W%k$r:n$l$^$;$s$G$7$g$&$+!)(B
> $B$3$s$JIw$K;H$$$?$$$_$?$$$J$d$D!#(B

Rails$B$G(Bvalidate$B$K$R$C$+$+$C$?$H$-$K@V$$OH$,$D$$$?$j$9$k$h$&$J46$8$G(B
$B0J2<$N$h$&$K0z$C$+$+$C$?%U%#!<%k%I$K2?$+0u$r$D$1$k$N$K;H$($k$+$b!"(B
$B$H$$$&%$%a!<%8$G$9!#(B

invalid_fields = {}
cgi = CGI.new(..., :... =>proc {|field_name, field_value|
  invalid_fields[field_name] = field_value
})
...
cgi.out(...) {
  ...
  cgi.text_field({...,"name"=>"some_text", "class"=>
    invalid_fields.include?("some_text") ? "invalid" : ""
  })
  ...
}
Posted by Fujioka (Guest)
on 22.09.2008 16:39
(Received via mailing list)
$BF#2,$G$9!#(B

>   ...
>   cgi.text_field({...,"name"=>"some_text", "class"=>
>     invalid_fields.include?("some_text") ? "invalid" : ""
>   })
>   ...
> }
> 
> 
$B$3$s$J46$8$G$7$g$&$+!#(B
invalid_fields={}
cgi=CGI.new(:accept_charset=>"EUC-JP"){|field_name,field_value|
  invalid_fields[field_name] = field_value
}
$B$3$s$J46$8$G;H$($^$9!#(Bnew$B$N%V%m%C%/$KEO$9$N$O$$$$$N$+$I$&$+HyL/$G$9$,!#(B
$B%a%=%C%I$N%V%m%C%/$,6u$$$F$$$k$N$G5M$a9~$s$G$_$^$7$?!#(B

Index: lib/cgi/core.rb
===================================================================
--- lib/cgi/core.rb  ($B%j%S%8%g%s(B 19454)
+++ lib/cgi/core.rb  ($B:n6H%3%T!<(B)
@@ -598,8 +598,21 @@

stdinput.read(Integer(env_table['CONTENT_LENGTH'])) or ''
                     else
                       read_from_cmdline
-                    end
+                    end.dup.force_encoding(@accept_charset)
                   )
+        if @accept_charset!="ASCII-8BIT" ||
@accept_charset!=Encoding::ASCII_8BIT
+          @params.each do |key,values|
+            values.each do |value|
+              unless value.valid_encoding?
+                if @accept_charset_error_block
+                  @accept_charset_error_block.call(key,value)
+                else
+                  raise "Accept-Charset encoding error"
+                end
+              end
+            end
+          end
+        end
       end

       @cookies = CGI::Cookie::parse((env_table['HTTP_COOKIE'] or
env_table['COOKIE']))
@@ -665,7 +678,24 @@
   # from the command line or (failing that) from standard input.
Otherwise,
   # cookies and other parameters are parsed automatically from the 
standard
   # CGI locations, which varies according to the REQUEST_METHOD.
-  def initialize(type = "query")
+  attr_reader :accept_charset
+  @@accept_charset="UTF-8"
+  def self.accept_charset
+    @@accept_charset
+  end
+  def self.accept_charset=(accept_charset)
+    @@accept_charset=accept_charset
+  end
+  def initialize(options = {},&block)
+    @accept_charset_error_block=block if block_given?
+    @options={:accept_charset=>@@accept_charset}
+    case options
+    when Hash
+      @options.merge!(options)
+    when String
+      @options[:tag_maker]=options
+    end
+    @accept_charset=@options[:accept_charset]
     if defined?(MOD_RUBY) && !ENV.key?("GATEWAY_INTERFACE")
       Apache.request.setup_cgi_env
     end
@@ -677,7 +707,7 @@
     @output_cookies = nil
     @output_hidden = nil

-    case type
+    case @options[:tag_maker]
     when "html3"
       require 'cgi/html'
       extend Html3
Posted by Fujioka (Guest)
on 22.09.2008 17:01
(Received via mailing list)
$BF#2,$G$9!#(B

> $B$3$s$J46$8$G$7$g$&$+!#(B
> invalid_fields={}
> cgi=CGI.new(:accept_charset=>"EUC-JP"){|field_name,field_value|
>   invalid_fields[field_name] = field_value
> }
> $B$3$s$J46$8$G;H$($^$9!#(Bnew$B$N%V%m%C%/$KEO$9$N$O$$$$$N$+$I$&$+HyL/$G$9$,!#(B
> $B%a%=%C%I$N%V%m%C%/$,6u$$$F$$$k$N$G5M$a9~$s$G$_$^$7$?!#(B
> 
$BBg$-$JH?BP$,$J$1$l$PL@F|$"$?$j$K$H$j$"$($:%3%_%C%H$7$F$7$^$&M=Dj$G$9!#(B
$B%^%k%A%Q!<%H$N$[$&$O$^$@2?$b$d$C$F$$$^$;$s$,!"(B
$B%(%s%3!<%G%#%s%00JA0$KF0$-$=$&$K$J$$$N$G!"(B
$B:#8eBP1~$7$F$$$-$^$9!#(B