Forum: Ruby on Rails Process Unicode POST request

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Wouter (Guest)
on 2007-02-14 20:08
(Received via mailing list)
Hi all,

I'm building a Rails controller which receives a POST request from an
external (Windows) application in order to communicate data. The
content of this POST request is encoded using Unicode. I know Ruby
doesn't support Unicode, but I was wondering if there was a way to
still properly process such a request.

A simple POST request containing "a=b" as data, *with* Unicode
translates into:

=== start req ===
POST /post/batch HTTP/1.1
Content-Type: application/x-www-form-urlencoded
User-Agent: Test/1.0
Host: 127.0.0.1:3000
Content-Length: 6
Cache-Control: no-cache
Cookie: _session_id=adb54e68cd96c44b4758209c8946c921

a.=.b.
=== end req ===

As you'd expect with Unicode encoding, "a" is now translated in
multiple bytes "a.", just like "=" and "b".

The YAML::dump(params) for this request is as follows:

--- !map:HashWithIndifferentAccess
action: batch
controller: post
? !binary "YQA=\n"
: !binary |
  AGI=

Which is obviously not what I'd expected.

To prove it does work without Unicode, the same POST request *without*
Unicode translates into:

=== start req ===
POST /post/batch HTTP/1.1
Content-Type: application/x-www-form-urlencoded
User-Agent: Test/1.0
Host: 127.0.0.1:3000
Content-Length: 3
Cache-Control: no-cache

a=b
=== end req ===

The YAML::dump(params) for this request is as follows:

--- !map:HashWithIndifferentAccess
a: b
action: batch
controller: post

So my question is: does anyone know how to make this work properly
with Unicode? The Rails version I'm using for this application is
1.2.2, so with $KCODE automatically set to UTF-8.

Thanks in advance,
Wouter
This topic is locked and can not be replied to.