--
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email to rubyonrails-ta...@googlegroups.com.
To post to this group, send email to rubyonra...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/CACmC4yC4%2Bha1CmCMcE4bH-Bnp6w3Y2oCrUYg_weLezH7W1pemA%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.
Hi Diego, There's definitely an encoding mismatch going on, and my guess would also be that it has to do with your db (and likely your mysql server settings as well). (Note that the data in your .../states.json looks good to me, in terms of being valid utf8. The problem is likely how that data is being stored in the db, such that when pulled out and used in the rails app again, it results in that encoding error.) Try the following in your rails console and see what you get: $ rails console Loading development environment ... ### what's the encoding for the env's db conn ### per ./config/database.yml?: ... :001 > ActiveRecord::Base.configurations[Rails.env]["encoding"] => "utf8" ### how was this db created (as ### recorded in mysql)?: ... :002 > ActiveRecord::Base.connection.exec_query("show create database #{ActiveRecord::Base.connection.current_database}") => #<ActiveRecord::Result:..., @rows=[["foo_dev", "CREATE DATABASE `foo_dev` /*... DEFAULT CHARACTER SET utf8 */"]], ...> ### what are the encoding settings ### for mysql server?: ... :003 > ActiveRecord::Base.connection.exec_query("show variables like 'char%'") => #<ActiveRecord::Result:... @rows=[["character_set_client", "utf8"], ["character_set_connection", "utf8"], ["character_set_database", "utf8"], ["character_set_filesystem", "binary"], ["character_set_results", "utf8"], ["character_set_server", "utf8"], ["character_set_system", "utf8"], ...> My guess is that one (or more) of the results above for you will show latin1 instead of utf8. If that's the case, and there's an issue with the specific db, and you can afford to blow it away and start over, then you should drop that db and create it again specifying utf8, something like: ... mysql> create database foo_dev character set utf8 collate utf8_general_ci; ... Also, if this is the case, and there's an issue with the mysql server settings, then you'll probably want to mod your mysql server's config defaults to use utf8 (and then restart mysql), something like: $ cat /etc/mysql/my.cnf ... [client] ... default-character-set = utf8 ... [mysqld] ... collation-server = utf8_unicode_ci init-connect = 'SET NAMES utf8' character-set-server = utf8 ... [mysql] ... default-character-set = utf8 ... Hope that helps, Jeff
"I guess"? Why not put some debugging/logging statements in your
code so you can say "I know"? Just a suggestion :-)
### what's the encoding for the env's db conn ### per ./config/database.yml?: ... :001 > ActiveRecord::Base.configurations[Rails.env]["encoding"] => "utf8" ### how was this db created (as ### recorded in mysql)?: ... :002 > ActiveRecord::Base.connection.exec_query("show create database #{ActiveRecord::Base.connection.current_database}") => #<ActiveRecord::Result:..., @rows=[["foo_dev", "CREATE DATABASE `foo_dev` /*... DEFAULT CHARACTER SET utf8 */"]], ...> ### what are the encoding settings ### for mysql server?: ... :003 > ActiveRecord::Base.connection.exec_query("show variables like 'char%'") => #<ActiveRecord::Result:... @rows=[["character_set_client", "utf8"], ["character_set_connection", "utf8"], ["character_set_database", "utf8"], ["character_set_filesystem", "binary"], ["character_set_results", "utf8"], ["character_set_server", "utf8"], ["character_set_system", "utf8"], ...>
To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/24b723e8-156a-4d24-a362-ef0d75e577a6%40googlegroups.com.