# mysql encoding with rails 2.3.2 and ruby 1.9.1

**URL:** <https://discuss.rubyonrails.org/t/mysql-encoding-with-rails-2-3-2-and-ruby-1-9-1/40733>\
**Category:** rubyonrails-talk\
**Created:** [March 21, 2009, 2:52pm UTC](https://discuss.rubyonrails.org/t/mysql-encoding-with-rails-2-3-2-and-ruby-1-9-1/40733 "2009-03-21T14:52:44Z")\
**Posts on this page:** 15\
**Page:** 1

<div class="post-metadata">

**Author:** ![ruby.freeman](https://avatars.discourse-cdn.com/v4/letter/r/ecccb3/32.png) [@ruby.freeman](https://discuss.rubyonrails.org/u/ruby.freeman)\
**Post date:** [March 21, 2009, 2:52pm UTC](https://discuss.rubyonrails.org/t/mysql-encoding-with-rails-2-3-2-and-ruby-1-9-1/40733/1 "2009-03-21T14:52:44Z")

</div>

when I run console with ruby 1.9.1 and rails 2.3.2, and trying to do something like

User.first.name.encoding

I'm getting #\<Encoding:ASCII-8BIT\>, though I've set "encoding: utf8" in database.yml

any suggestions?

---

<div class="post-metadata">

**Author:** ![bitsweat](https://sea2.discourse-cdn.com/rubyonrails/user_avatar/discuss.rubyonrails.org/bitsweat/32/591_2.png) [@bitsweat](https://discuss.rubyonrails.org/u/bitsweat)\
**Post date:** [March 22, 2009, 3:18am UTC](https://discuss.rubyonrails.org/t/mysql-encoding-with-rails-2-3-2-and-ruby-1-9-1/40733/2 "2009-03-22T03:18:14Z")

</div>

The mysql driver is not encoding-aware yet.

jeremy

---

<div class="post-metadata">

**Author:** ![11175](https://avatars.discourse-cdn.com/v4/letter/1/8edcca/32.png) [@11175](https://discuss.rubyonrails.org/u/11175)\
**Post date:** [March 23, 2009, 5:16pm UTC](https://discuss.rubyonrails.org/t/mysql-encoding-with-rails-2-3-2-and-ruby-1-9-1/40733/3 "2009-03-23T17:16:07Z")

</div>

Jeremy Kemper wrote:

> > when I run console with ruby 1.9.1 and rails 2.3.2, and trying to do something like
> > 
> > User.first.name.encoding
> > 
> > I'm getting #\<Encoding:ASCII-8BIT\>, though I've set "encoding: utf8" in database.yml
> > 
> > any suggestions?
> 
> The mysql driver is not encoding-aware yet.
> 
> jeremy

Same problem here with mysql and sqlite3.

When will the mysql and sqlite3 drivers be encoding-aware?

Is there a workaround?

I have problems with this because I'm from germany and need utf8 for the german umlauts.

If i save the templates as ANSI, the outputs from database with umlauts are working, but when i use umlauts directly in the templates i get this error:

invalid byte sequence for encoding "ASCII-8BIT"

If i save the templates as UTF8, the umlauts in the templates are working, but the outputs from the database with umlauts cause this error:

invalid byte sequence for encoding "UTF-8"

I'm using Ruby 1.9.1, Rails 2.3.2, mysql/ruby 2.8.1, sqlite3/ruby 1.2.4

slang17

---

<div class="post-metadata">

**Author:** ![Con](https://avatars.discourse-cdn.com/v4/letter/c/9fc29f/32.png) [@Con](https://discuss.rubyonrails.org/u/Con)\
**Post date:** [March 23, 2009, 6:54pm UTC](https://discuss.rubyonrails.org/t/mysql-encoding-with-rails-2-3-2-and-ruby-1-9-1/40733/4 "2009-03-23T18:54:35Z")

</div>

> Jeremy Kemper wrote:
> 
> > >
> 
> > > when I run console with ruby 1.9.1 and rails 2.3.2, and trying to do
> 
> > > something like
> 
> > >
> 
> > > User.first.name.encoding
> 
> > >
> 
> > > I’m getting #Encoding:ASCII-8BIT, though I’ve set “encoding: utf8”
> 
> > > in database.yml
> 
> > >
> 
> > > any suggestions?
> 
> > 
> 
> > The mysql driver is not encoding-aware yet.
> 
> > 
> 
> > jeremy

> Same problem here with mysql and sqlite3.
> 
> When will the mysql and sqlite3 drivers be encoding-aware?
> 
> Is there a workaround?
> 
> I have problems with this because I’m from germany and need utf8 for the
> 
> german umlauts.
> 
> If i save the templates as ANSI, the outputs from database with umlauts
> 
> are working, but when i use umlauts directly in the templates i get this
> 
> error:
> 
> invalid byte sequence for encoding “ASCII-8BIT”
> 
> If i save the templates as UTF8, the umlauts in the templates are
> 
> working, but the outputs from the database with umlauts cause this
> 
> error:
> 
> invalid byte sequence for encoding “UTF-8”
> 
> I’m using Ruby 1.9.1, Rails 2.3.2, mysql/ruby 2.8.1, sqlite3/ruby 1.2.4
> 
> slang17

Your question should also be posted to driver maintainers and possible the

MySQL and SQLite projects. Furthermore, all these projects are open-source.

Thus, please feel free to contribute/add these features if you need them.

Good luck,

-Conrad

---

<div class="post-metadata">

**Author:** ![ruby.freeman](https://avatars.discourse-cdn.com/v4/letter/r/ecccb3/32.png) [@ruby.freeman](https://discuss.rubyonrails.org/u/ruby.freeman)\
**Post date:** [April 4, 2009, 4:10pm UTC](https://discuss.rubyonrails.org/t/mysql-encoding-with-rails-2-3-2-and-ruby-1-9-1/40733/5 "2009-04-04T16:10:33Z")

</div>

> Your question should also be posted to driver maintainers and possible the MySQL and SQLite projects. Furthermore, all these projects are open-source. Thus, please feel free to contribute/add these features if you need them.

It's problem of rails, not mysql library. ActiveRecord should be encoding-aware now

---

<div class="post-metadata">

**Author:** ![ruby.freeman](https://avatars.discourse-cdn.com/v4/letter/r/ecccb3/32.png) [@ruby.freeman](https://discuss.rubyonrails.org/u/ruby.freeman)\
**Post date:** [April 6, 2009, 10:42am UTC](https://discuss.rubyonrails.org/t/mysql-encoding-with-rails-2-3-2-and-ruby-1-9-1/40733/6 "2009-04-06T10:42:29Z")

</div>

> Where did you get that information? Is there any workaround or patch for that problem with ActiveRecord?

See, when I do some requests from rails console, I see that result is in utf-8 encoding, so mysql works correctly. But ActiveRecord sets encoding for all attributes as ASCII-8BIT. For now we can reencode all results in our views with "force\_encoding" methods untill AcriveRecord is encoding-aware

---

<div class="post-metadata">

**Author:** ![Con](https://avatars.discourse-cdn.com/v4/letter/c/9fc29f/32.png) [@Con](https://discuss.rubyonrails.org/u/Con)\
**Post date:** [April 6, 2009, 12:50pm UTC](https://discuss.rubyonrails.org/t/mysql-encoding-with-rails-2-3-2-and-ruby-1-9-1/40733/7 "2009-04-06T12:50:51Z")

</div>

Which requests do you perform in the rails console?

-Conrad

---

<div class="post-metadata">

**Author:** ![ruby.freeman](https://avatars.discourse-cdn.com/v4/letter/r/ecccb3/32.png) [@ruby.freeman](https://discuss.rubyonrails.org/u/ruby.freeman)\
**Post date:** [April 6, 2009, 1:00pm UTC](https://discuss.rubyonrails.org/t/mysql-encoding-with-rails-2-3-2-and-ruby-1-9-1/40733/8 "2009-04-06T13:00:44Z")

</div>

> Which requests do you perform in the rails console?

any find request, like in first message

---

<div class="post-metadata">

**Author:** ![Hector\_Gomez](https://avatars.discourse-cdn.com/v4/letter/h/9d8465/32.png) [@Hector\_Gomez](https://discuss.rubyonrails.org/u/Hector_Gomez)\
**Post date:** [April 11, 2009, 12:16am UTC](https://discuss.rubyonrails.org/t/mysql-encoding-with-rails-2-3-2-and-ruby-1-9-1/40733/9 "2009-04-11T00:16:45Z")

</div>

I made a bug in lighhouse to track this problems, I have some patches for mysql and for the problem with the views in a related ticket [https://rails.lighthouseapp.com/projects/8994/tickets/2476-ascii-8bit-encoding-of-query-results-in-rails-232-and-ruby-191#ticket-2476-2](https://rails.lighthouseapp.com/projects/8994/tickets/2476-ascii-8bit-encoding-of-query-results-in-rails-232-and-ruby-191#ticket-2476-2)

---

<div class="post-metadata">

**Author:** ![Rick3](https://avatars.discourse-cdn.com/v4/letter/r/ecb155/32.png) [@Rick3](https://discuss.rubyonrails.org/u/Rick3)\
**Post date:** [April 11, 2009, 6:07pm UTC](https://discuss.rubyonrails.org/t/mysql-encoding-with-rails-2-3-2-and-ruby-1-9-1/40733/10 "2009-04-11T18:07:18Z")

</div>

Postgresql v6.3.8.1 works with Ruby 1.9.1p0 and Rails 2.3.2 - my guess is the problem is with either the driver or the database itself.

Can you tell what the actual encoding is of the database? How about setting the default? MySQL refers to this as the CHARACTER SET. For example, to set utf8 as the encoding for a table named "test\_development" you could use:

ALTER TABLE `test_development`.`pages` CHARACTER SET utf8;

Noodle around with the MySQL user's manual and I'm sure you'll find the way to make utf8 the default for all new tables.

For reference, I've got:

mysql Ver 14.14 Distrib 5.1.31, for apple-darwin9.5.0 (powerpc) using readline 5.1

and

gem list mysql == mysql (2.8.1)

---

<div class="post-metadata">

**Author:** ![ruby.freeman](https://avatars.discourse-cdn.com/v4/letter/r/ecccb3/32.png) [@ruby.freeman](https://discuss.rubyonrails.org/u/ruby.freeman)\
**Post date:** [April 11, 2009, 6:28pm UTC](https://discuss.rubyonrails.org/t/mysql-encoding-with-rails-2-3-2-and-ruby-1-9-1/40733/11 "2009-04-11T18:28:33Z")

</div>

> Postgresql v6.3.8.1 works with Ruby 1.9.1p0 and Rails 2.3.2 - my guess is the problem is with either the driver or the database itself.

Problem is not with database. As I said above, when I do something like User.first.name.encoding I'm getting #\<Encoding:ASCII-8BIT\>. If I do this one - User.first.name.force\_encoding("utf-8") - I'm getting normal utf-8 string. The problem is that ActiveRecord gets all data from database as ASCII.

---

<div class="post-metadata">

**Author:** ![Rick3](https://avatars.discourse-cdn.com/v4/letter/r/ecb155/32.png) [@Rick3](https://discuss.rubyonrails.org/u/Rick3)\
**Post date:** [April 11, 2009, 6:44pm UTC](https://discuss.rubyonrails.org/t/mysql-encoding-with-rails-2-3-2-and-ruby-1-9-1/40733/12 "2009-04-11T18:44:55Z")

</div>

right - somewhat slow on the uptake

---

<div class="post-metadata">

**Author:** ![Hector\_Gomez](https://avatars.discourse-cdn.com/v4/letter/h/9d8465/32.png) [@Hector\_Gomez](https://discuss.rubyonrails.org/u/Hector_Gomez)\
**Post date:** [April 11, 2009, 8:51pm UTC](https://discuss.rubyonrails.org/t/mysql-encoding-with-rails-2-3-2-and-ruby-1-9-1/40733/13 "2009-04-11T20:51:15Z")

</div>

ruby.freeman have you checked my fork of mysql-ruby? and the ticket in lighthouse? I think this will resolve your problem. Or have you checked it out and still got problems?

---

<div class="post-metadata">

**Author:** ![Con](https://avatars.discourse-cdn.com/v4/letter/c/9fc29f/32.png) [@Con](https://discuss.rubyonrails.org/u/Con)\
**Post date:** [April 11, 2009, 10:31pm UTC](https://discuss.rubyonrails.org/t/mysql-encoding-with-rails-2-3-2-and-ruby-1-9-1/40733/14 "2009-04-11T22:31:21Z")

</div>

Is your update forked back into the main branch for the project?

-Conrad

---

<div class="post-metadata">

**Author:** ![Hector\_Gomez](https://avatars.discourse-cdn.com/v4/letter/h/9d8465/32.png) [@Hector\_Gomez](https://discuss.rubyonrails.org/u/Hector_Gomez)\
**Post date:** [April 12, 2009, 12:07am UTC](https://discuss.rubyonrails.org/t/mysql-encoding-with-rails-2-3-2-and-ruby-1-9-1/40733/15 "2009-04-12T00:07:12Z")

</div>

I have not contacted upstream (tmtm) but he is working on a pure ruby adapter called ruby-mysql (is encoding aware, etc) it has a compat layer but is not functional now. I have made a gem of my fork hectoregm-mysql-ruby that you use to make tests, but I will try to get this changes merge upstream.
