[#40602] [ruby-trunk - Bug #5532][Open] Compile problem for bigdecimal on cygwin — Martin Dürst <duerst@...>
[#40646] [ruby-trunk - Bug #5541][Open] Better configure error message when llvm-gcc is the default compiler — Eric Hodel <drbrain@...7.net>
[#40647] [ruby-trunk - Bug #5542][Open] Ruby 1.9.3-p0 changed arity on default initialization method — Joshua Ballanco <jballanc@...>
[#40648] [ruby-trunk - Feature #5543][Open] rb_thread_blocking_region() API is poorly designed — Christopher Huff <cjameshuff@...>
[#40662] Relevant methods not appearing in RDoc — Andrew Grimm <andrew.j.grimm@...>
The method Module.private_constant isn't appearing in
On Nov 1, 2011, at 3:45 PM, Andrew Grimm wrote:
On Wed, Nov 2, 2011 at 9:55 AM, Eric Hodel <drbrain@segment7.net> wrote:
[#40684] [ruby-trunk - Feature #5555][Open] rename #include? to #includes? — Alexey Muranov <muranov@...>
> The basic naming for methods in standard class libraries are:
On Tue, Apr 24, 2012 at 15:47, Roger Pack <rogerdpack2@gmail.com> wrote:
>> It always confuses me how that one defies the rule.
[#40688] [ruby-trunk - Bug #5556][Open] SIGHUP no longer ignored when sent to process group from a subprocess — Brian Ford <brixen@...>
[#40706] [ruby-trunk - Feature #5562][Open] Improvement of Windows IO performance — Hiroshi Shirosaki <h.shirosaki@...>
[#40737] [ruby-trunk - Bug #5570][Open] Encoding of environment variables on Windows — Nikolai Weibull <now@...>
Hello,
[#40748] Proposal for sustainable branch maintenance — "Yuki Sonoda (Yugui)" <yugui@...>
-----BEGIN PGP SIGNED MESSAGE-----
Why maintain 1.9.1 at all? I don't see the benefit. People need to
Hello,
[#40751] [ruby-trunk - Feature #5574][Open] Make arrays comparable — Arnau Sanchez <rbarnau@...>
[#40770] [ruby-trunk - Feature #5578][Open] Embedded YAML for Ruby 2.0 — Thomas Sawyer <transfire@...>
[#40806] [ruby-trunk - Feature #5583][Open] Optionally typing — Yasushi ANDO <andyjpn@...>
[#40824] [ruby-trunk - Feature #5588][Open] add negation flag (v) to Regexp — Suraj Kurapati <sunaku@...>
[#40840] A quiz: Re: Second patch attempt for PATH_MAX fix in ruby1.9.1- 1.9.3~rc1-3 — Svante Signell <svante.signell@...>
Hello,
[#40845] [Ruby 1.8 - Bug #5599][Open] YAML.load_documents — Thomas Sawyer <transfire@...>
[#40865] IO.copy_stream creates files with restrictive permissions — Eric Wong <normalperson@...>
I'm not sure if this is a bug or intended as spec.
2011/11/9 Eric Wong <normalperson@yhbt.net>:
>> I noticed when a file name argument is passed to the IO.copy_stream, the
On 20/11/2011, at 5:09 PM, KOSAKI Motohiro wrote:
2011/11/20 Clifford Heath <clifford.heath@gmail.com>:
>> I think documentation is the wrong answer. The security defects are not caused
2011/11/22 KOSAKI Motohiro <kosaki.motohiro@gmail.com>:
On 22/11/2011, at 9:39 AM, Tanaka Akira wrote:
2011/11/22 Clifford Heath <clifford.heath@gmail.com>:
>> The umask that almost every Unix distribution has always had in /etc/profile - which is 022.
[#40867] Question regarding Ruby 2.0 backwards compatibility — Martin Bo煬et <martin.bosslet@...>
If I recall it correctly, the goal for 2.0 was to stay API-compatible
[#40898] [ruby-trunk - Feature #5605][Open] [PATCH] net/http: use IO.copy_stream for requests using body_stream — Eric Wong <normalperson@...>
[#40908] [ruby-trunk - Feature #5607][Open] Inconsistent reaction in Range of String — Yen-Nan Lin <redmine@...>
[#40941] [ruby-trunk - Feature #5617][Open] Allow install RubyGems into dediceted directory — Vit Ondruch <v.ondruch@...>
[#40943] [ruby-trunk - Bug #5619][Open] Segfault on OS X — Otto Hilska <otto@...>
[#40951] [Backport93 - Backport #5621][Open] Please backport thread-safe autoloading patch — Mike Perham <mperham@...>
Unfortunately ruby-head has a deadlock in one of my go-to scenarios for
-----BEGIN PGP SIGNED MESSAGE-----
On Sat, Nov 12, 2011 at 7:24 PM, Hiroshi Nakamura <nahi@ruby-lang.org> wrote:
-----BEGIN PGP SIGNED MESSAGE-----
On Fri, Nov 18, 2011 at 12:15 AM, Hiroshi Nakamura <nahi@ruby-lang.org> wro=
(2011/11/19 6:31), Charles Oliver Nutter wrote:
On Fri, Nov 18, 2011 at 5:24 PM, Hiroshi Nakamura <nahi@ruby-lang.org> wrot=
(2011/11/19 9:08), Charles Oliver Nutter wrote:
-----BEGIN PGP SIGNED MESSAGE-----
[#40982] [ruby-trunk - Bug #5625][Open] Remove profanity and pejoratives — Andrew Grimm <andrew.j.grimm@...>
I was not aiming to protect children from the f-word. My intention was
[#41004] [ruby-trunk - Feature #5628][Open] Module#basename — Thomas Sawyer <transfire@...>
[#41024] [ruby-trunk - Feature #5632][Open] Attempt to open included class shades it instead. — Boris Stitnicky <boris@...>
[#41025] Proposal to add new methods: positive? negative? natural? — JosFrancisco Calvo Moreno <josefranciscocalvo@...>
Hi all!
On 11/15 12:58, Jos? Francisco Calvo Moreno wrote:
Hi Jeremy,
Hi Chuck,
2011/11/14 Jos=E9 Francisco Calvo Moreno <josefranciscocalvo@gmail.com>:
I don't have a deep understanding of ruby core base types but I want to
On IEEE 754 Floating Point Numbers, there are positive 0.0 and negative 0.0=
Do you suggest the following?
[#41038] [ruby-trunk - Bug #5634][Open] yield and binding — Thomas Sawyer <transfire@...>
[#41078] mkmf sets CFLAGS to contain flags that it shouldn't be setting — Nikolai Weibull <now@...>
Hi!
Hi,
On Thu, Nov 17, 2011 at 07:24, Nobuyoshi Nakada <nobu@ruby-lang.org> wrote:
Hi,
On Thu, Nov 17, 2011 at 14:46, Nobuyoshi Nakada <nobu@ruby-lang.org> wrote:
[#41079] Why doesn’t mkmf’s have_macro add a HAVE_X to $defs? — Nikolai Weibull <now@...>
Hi!
Hi,
[#41086] [ruby-trunk - Feature #5644][Open] add Enumerable#exclude? antonym — Suraj Kurapati <sunaku@...>
[#41114] [Backport93 - Backport #5646][Open] Backport r33775 — Aaron Patterson <aaron@...>
> Also, is there a script for doing backports? =A0It looks like the commit =
On Thu, Dec 01, 2011 at 02:19:31AM +0900, KOSAKI Motohiro wrote:
>> > Also, is there a script for doing backports? =A0It looks like the comm=
[#41116] Pathname['abc'] instead of Pathname('abc') global method as constructor alternative — "Alexander E. Fischer" <aef@...>
Hello,
[#41149] autoload will be dead — Yukihiro Matsumoto <matz@...>
Hi,
Does this also mean that we will not enhance const_missing to support
[#41160] [ruby-trunk - Bug #5650][Open] Add rb_enc_raise() to allow C extensions to raise errors with messages with correct encoding — Nikolai Weibull <now@...>
[#41161] conflict between 1.8.7 and 1.9.3 installations — Joel VanderWerf <joelvanderwerf@...>
Hi,
On 11/19/2011 04:55 PM, Nobuyoshi Nakada wrote:
[#41171] [ruby-trunk - Feature #5653] "I strongly discourage the use of autoload in any standard libraries" (Re: autoload will be dead) — Hiroshi Nakamura <nakahiro@...>
[#41175] [ruby-trunk - Feature #5654][Open] Introduce global lock to avoid concurrent require — Hiroshi Nakamura <nakahiro@...>
[#41186] [ruby-trunk - Bug #5657][Open] Constants in included modules aren't visible when defining classes with Class.new — Gary Bernhardt <gary.bernhardt@...>
[#41211] Availability of ruby/intern.h — Aaron Patterson <tenderlove@...>
Are functions accessible via ruby/intern.h considered to be "public"
[#41212] [ruby-trunk - Feature #5662][Open] inject-accumulate, or Haskell's mapAccum* — Edvard Majakari <edvard.majakari@...>
[#41213] [ruby-trunk - Bug #5663][Open] Combined map/select method — Yehuda Katz <wycats@...>
[#41256] [ruby-trunk - Feature #2567] Net::HTTP does not handle encoding correctly — Yui NARUSE <naruse@...>
[#41262] [ruby-trunk - Feature #5666][Open] Make rb_path2class public — Aaron Patterson <aaron@...>
[#41302] [ruby-trunk - Feature #5673][Open] undef_method probably doesn't need to raise an error — Thomas Sawyer <transfire@...>
[#41314] [ruby-trunk - Bug #5675][Open] [mingw] static build fails due to socket extension build failure — Jon Forums <redmine@...>
> compiling ../../../ext/socket/socket.c
On Sun, Nov 27, 2011 at 4:11 AM, KOSAKI Motohiro
2011/11/27 Luis Lavena <luislavena@gmail.com>:
[#41321] [Proposal] C API arrangement — Yugui <yugui@...>
Hi, mame-san
[#41336] Wrong encoding of Symbol — Andriy Tyurnikov <andriy.tyurnikov@...>
By default Symbols are encoded as US-ASCII,=20
Hi,
Hi,
Matz wrote :
[#41338] [ruby-trunk - Feature #5677][Open] IO C API — Martin Bosslet <Martin.Bosslet@...>
[#41340] [ruby-trunk - Feature #5678][Open] StringIO#to_str — Martin Bosslet <Martin.Bosslet@...>
[#41351] [ruby-trunk - Bug #5679][Open] Too many arguments for format warnings on mingw32 build — Heesob Park <phasis@...>
> I can see the following warnings during mingw32 build.
[#41370] [ruby-trunk - Bug #5681][Open] Conflcting types for rb_w32_inet_ntop caused by duplicate definition under MinGW — Luis Lavena <luislavena@...>
2011/11/28 Luis Lavena <luislavena@gmail.com>:
[#41404] [ruby-trunk - Bug #5690][Open] Module#qualified_const_get — Yehuda Katz <wycats@...>
Hi,
[ruby-core:41256] [ruby-trunk - Feature #2567] Net::HTTP does not handle encoding correctly
Issue #2567 has been updated by Yui NARUSE.
I don't decide whether merge this or not yet, an experimental patch is following:
diff --git a/lib/net/http.rb b/lib/net/http.rb
index 1c594e0..0abcaa5 100644
--- a/lib/net/http.rb
+++ b/lib/net/http.rb
@@ -2723,6 +2723,8 @@ module Net #:nodoc:
end
@read = true
+ enc = detect_encoding(@body)
+ @body.force_encoding(enc) if enc
@body
end
@@ -2807,6 +2809,167 @@ module Net #:nodoc:
end
end
+ private
+ # :nodoc:
+ def detect_encoding(str, encoding=nil)
+ if encoding
+ elsif encoding = type_params['charset']
+ elsif encoding = check_bom(str)
+ else
+ case main_type.downcase
+ when %r{text/x(?:ht)?ml|application/(?:[^+]+\+)?xml}
+ /\A<xml[ \t\r\n]+
+ version[ \t\r\n]*=[ \t\r\n]*(?:"[0-9.]+"|'[0-9.]*')[ \t\r\n]+
+ encoding[ \t\r\n]*=[ \t\r\n]*
+ (?:"([A-Za-z][\-A-Za-z0-9._]*)"|'([A-Za-z][\-A-Za-z0-9._]*)')/x =~ str
+ encoding = $1 || $2 || Encoding::UTF_8
+ when %r{text/html.*}
+ sniff_encoding(str, encoding=nil)
+ end
+ end
+ return encoding
+ end
+
+ # :nodoc:
+ def sniff_encoding(str, encoding=nil)
+ # the encoding sniffing algorithm
+ # http://www.w3.org/TR/html5/parsing.html#determining-the-character-encoding
+ return enc if enc = scanning_meta(str)
+ # 6. last visited page or something
+ # 7. frequency
+ if str.ascii_only?
+ return Encoding::US_ASCII
+ else
+ utf8str = str.dup.force_encoding(Encoding::UTF_8)
+ return utf8str if utf8str.valid_encoding?
+ end
+ # 8. implementation-defined or user-specified
+ end
+
+ # :nodoc:
+ def check_bom(str)
+ case str.byteslice(0, 2)
+ when "\xFE\xFF"
+ return Encoding::UTF_16BE
+ when "\xFF\xFE"
+ return Encoding::UTF_16LE
+ end
+ if "\xEF\xBB\xBF" == str.byteslice(0, 3)
+ return Encoding::UTF_8
+ end
+ nil
+ end
+
+ # :nodoc:
+ def scanning_meta(str)
+ require 'strscan'
+ ss = StringScanner.new(str)
+ while true
+ if ss.skip(/<!--.*?-->/)
+ elsif ss.skip(/meta[\t\n\f\r ]*/)
+ attrs = {} # attribute_list
+ got_pragma = false
+ need_pragma = nil
+ charset = nil
+
+ # step: Attributes
+ while attr = get_attribute(ss)
+ name, value = *attr
+ next if attrs[name]
+ attrs[name] = true
+ case name
+ when 'http-equev'
+ got_pragma = true if value == 'content-type'
+ when 'content'
+ encoding = extracting_encodings_from_meta_elements(value)
+ unless charset
+ charset = encoding
+ end
+ need_pragma = true
+ when 'charset'
+ need_pragma = false
+ charset = value
+ end
+ end
+
+ # step: Processing
+ next if need_pragma.nil?
+ next if need_pragma && !got_pragma
+ charset = Encoding.find(charset) rescue nil
+ next unless charset
+ charset = Encoding::UTF_8 if charset == Encoding::UTF_16
+ return charset # tentative
+ elsif ss.skip(/<\/?[A-Za-z][^\t\n\f\r ]*/)
+ 1 while get_attribute(ss)
+ elsif ss.skip(/<[!\/?][^>]*>/)
+ elsif ss.getch
+ end
+ end
+ nil
+ end
+
+ def get_attribute(ss)
+ ss.scan(/[\t\n\f\r \/]*/)
+ if ss.peek(1) == '>'
+ ss.getch
+ return nil
+ end
+ name = ss.scan(/[^=\t\n\f\r \/>]*/)
+ name.downcase!
+ raise if name.empty?
+ ss.skip(/[\t\n\f\r ]*/)
+ if ss.getch != '='
+ value = ''
+ return [name, value]
+ end
+ ss.skip(/[\t\n\f\r ]*/)
+ case ss.peek(1)
+ when '"'
+ ss.getch
+ value = ss.scan(/[^"]+/)
+ value.downcase!
+ ss.getch
+ when "'"
+ ss.getch
+ value = ss.scan(/[^']+/)
+ value.downcase!
+ ss.getch
+ when '>'
+ value = ''
+ else
+ value = ss.scan(/[^\t\n\f\r >]+/)
+ value.downcase!
+ end
+ [name, value]
+ end
+
+ def extracting_encodings_from_meta_elements(value)
+ # http://dev.w3.org/html5/spec/fetching-resources.html#algorithm-for-extracting-an-encoding-from-a-meta-element
+ if /charset[\t\n\f\r ]*=(?:"([^"]*)"|'([^']*)'|["']|\z|([^\t\n\f\r ;]+))/i =~ value
+ return $1 || $2 || $3
+ end
+ return nil
+ end
+
+ # http://dev.w3.org/html5/spec/parsing.html#table-encoding-overrides
+ TABLE_ENCODING_OVERRIDES = {
+ 'EUC-KR' => Encoding::CP949,
+ 'EUC-JP' => Encoding::CP51932,
+ 'GB2312' => Encoding::GBK,
+ 'GB_2312-80' => Encoding::GBK,
+ 'ISO-8859-1' => Encoding::Windows_1252,
+ 'ISO-8859-9' => Encoding::Windows_1254,
+ 'ISO-8859-11' => Encoding::Windows_874,
+ 'KS_C_5601-1987' => Encoding::CP949,
+ 'SHIFT_JIS' => Encoding::Windows_31J,
+ 'TIS-620' => Encoding::Windows_874,
+ 'US-ASCII' => Encoding::Windows_1252,
+ }
+
+ # :nodoc:
+ def override_encoding(enc)
+ TABLE_ENCODING_OVERRIDES[enc.strip.upcase] || enc
+ end
end
----------------------------------------
Feature #2567: Net::HTTP does not handle encoding correctly
http://redmine.ruby-lang.org/issues/2567
Author: Ryan Sims
Status: Assigned
Priority: Low
Assignee: Yui NARUSE
Category: lib
Target version: 2.0.0
ruby -v: ruby 1.9.1p376 (2009-12-07 revision 26041) [i686-linux]
=begin
A string returned by an HTTP get does not have its encoding set appropriately with the charset field, nor does the content_type report the charset. Example code demonstrating incorrect behavior is below.
#!/usr/bin/ruby -w
# encoding: UTF-8
require 'net/http'
uri = URI.parse('http://www.hearya.com/feed/')
result = Net::HTTP.start(uri.host, uri.port) {|http|
http.get(uri.request_uri)
}
p result['content-type'] # "text/xml; charset=UTF-8" <- correct
p result.content_type # "text/xml" <- incorrect; truncates the charset field
puts result.body.encoding # ASCII-8BIT <- incorrect encoding, should be UTF-8
=end
--
http://redmine.ruby-lang.org