Sorry for the late response. I took a dive in the Net:HTTP code and I have some bad news.
It uses a BufferedIO over the socket of the connection. And when it reads from the socket it uses IO#sysread that is the lowest read you can use in ruby. This methods always returns a ASCII-8BIT string. So you have to transcode or force_encoding the responses from Net:HTTP explicitly. Hector On Apr 13, 5:57 pm, buddycat <[email protected]> wrote: > also, my particular case is with asp content; but i am sure that the > problem can be reproduced with any web stack or even a static text > file with these characters. > > On Apr 13, 6:52 pm, buddycat <[email protected]> wrote: > > > so i use lib/asp.rb module to get legacy asp content from internal > > win2k/iis5/asp (classic not .net) servers as a mixin and require it in > > my application_controller.rb as i have many asp pages. i do it this > > way because it gives me a smooth incremental upgrade path to rails > > from asp by replacing page for page as we write a better rails > > replacement. this way my routes are all rails and i just call > > asp_get_content when i have an asp page to wrap. > > > controller: > > def my_legacy_page > > asp_get_content > > end > > > lib/asp.rb > > module asp > > def asp_get_content > > > �...@asp_response = Net::HTTP.start(host, port) {|x| > > x.read_timeout = 1200 > > x.send_request(method, path, data, headers) > > } > > > # return false on redirects so we can use custom renders like so: > > # render :foo => :bar if asp_get_content while still allowing just > > # asp_get_content without anything else for standard stuff > > case @asp_response > > when Net::HTTPRedirection > > redirect_to "#...@asp_response['location']}" > > false > > else > > true > > end > > end > > > view: > > <%= @asp_response.body %> > > > to reproduce the issue, just add > > > <%= chr(150) %> to the asp page. rails will choke with invalid byte > > sequence utf-8 as soon as the response.rb tries to parse > > @asp_response.body. see the above comments for the stack trace. > > > this is just my particular situation. i suspect you can add any high, > > non-standard ascii code that windows likes like ascii 128-159. my test > > case is ascii 150 that will reliably reproduce the issue. my point is > > not with encoding per se, i just think that rails should be a bit more > > fault tolerant around encodings as interop makes it almost a certainty > > that we will pull incontent with bad encodings just as we pull in > > malformed html. we cope with the latter well but now need to do so > > with the former. imho. > > > thanks...gg > > > On Apr 13, 5:05 am, Conrad Taylor <[email protected]> wrote: > > > > 2009/4/13 buddycat <[email protected]> > > > > > hector, > > > > > further update: > > > > > i was able to set both my internal and external encoding thanks to > > > > hongli lai at phusion passenger. he helped me with a wrapper for my > > > > local ruby that uses the encoding option. not suggesting that this is > > > > his preferred method though, but you don't seem to be able to pass > > > > ruby options any other way that i'm aware of in passenger's apache > > > > config. > > > > > /usr/local/ruby1.9/bin/ruby_wrapper: > > > > #!/bin/bash > > > > exec /usr/local/ruby1.9/bin/ruby -E utf-8:utf-8 "$@" > > > > > then in apache2.conf: > > > > PassengerRuby /usr/local/ruby1.9/bin/ruby_wrapper > > > > > restart apache. > > > > > in a controller: > > > > raise "#{Encoding.default_internal} #{Encoding.default_internal}" > > > > > results in: > > > > utf-8 utf-8 > > > > > so all is good. for my app anyway. irb and script/console is a pain. > > > > > unfortunately, after all this, my asp pages still get ascii encoded > > > > when brought in by net::http (after adding all the asp settings i can > > > > to convince it to use utf). also, more unfortunately, your assertion > > > > that if i have the default encodings set right (particularly > > > > default_internal which i do now), that it will silently and fautlessly > > > > convert my ascii page without error. no joy. got same utf encoding > > > > error that i started with. > > > > > so...guess i am back to doing explicit encoding like you suggested or > > > > going back to iconv. > > > > > all in all i have to say that ruby1.9 and rails2.3 and encoding and > > > > irb and compiling your own ruby and... are still very rough. > > > > > ...gg > > > > Do you have a test case that I can reproduce the issue that you're seeing? > > > > Thanks, > > > > -Conrad --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---

