Ruby on Rails | Screencasts | Download | Documentation | Weblog | Community | Source

Ticket #2975 (closed 1: fixed)

Opened 3 years ago

Last modified 2 years ago

Paula

Reported by: shugo Assigned to: David
Priority: 1 Milestone: 1
Component: 1 Version: 1
Severity: 1 Keywords: Paula
Cc: Paula

Description

MySQL adapter seems to need some fixes to handle multi-byte characters correctly. The attached patch adds new option `encoding' to specify character encodings. (Please note that mysql.options() should be called before mysql.real_connect(), and binary strings should be encoded in hexadecimal format.)

To test it, please add encoding options to connection.rb.

--- test/connections/native_mysql/connection.rb (revision 3149)
+++ test/connections/native_mysql/connection.rb (working copy)
@@ -9,12 +9,14 @@

 ActiveRecord::Base.establish_connection(
   :adapter  => "mysql",
   :username => "rails",
+  :encoding => "cp932",
   :database => db1
 )

 Course.establish_connection(
   :adapter  => "mysql",
   :username => "rails",
+  :encoding => "cp932",
   :database => db2
 )

Attachments

mysql_encoding.diff (1.9 kB) - added by shugo on 11/21/05 16:46:29.

Change History

11/21/05 16:46:29 changed by shugo

  • attachment mysql_encoding.diff added.

11/21/05 17:15:16 changed by shugo@ruby-lang.org

FYI, this option is only available on MySQL 4.1 or later.

11/21/05 18:51:04 changed by bitsweat

  • keywords set to mysql encoding charset.
  • milestone set to 1.1.

11/21/05 18:51:30 changed by bitsweat

  • status changed from new to closed.
  • resolution set to fixed.

(In [3152]) MySQL: introduce :encoding option to specify the character set for client, connection, and results. Only available for MySQL 4.1 and later with the mysql-ruby driver. Do SHOW CHARACTER SET in mysql client to see available encodings. Closes #2975.

12/12/05 12:56:59 changed by etienne.durand@mail.com

  • priority changed from normal to high.
  • status changed from closed to reopened.
  • resolution deleted.
  • severity changed from normal to blocker.

Doesn't work for me on activerecord 1.13.1:

In mysql_adapter:

mysql.options(Mysql::SET_CHARSET_NAME, config[:encoding])

For info, Mysql::SET_CHARSET_NAME = 7

Bu in Mysql::options: if option == OPT_LOCAL_INFILE then

...

else

raise

end

*Conclusion:* OPT_LOCAL_INFILE == 7 and SET_CHARSET_NAME == 8, condition is always false, and it will *always* throw an exception

12/12/05 13:40:20 changed by bitsweat

  • status changed from reopened to closed.
  • resolution set to fixed.

As noted, this feature only works with the mysql-ruby driver. gem install mysql

08/05/06 05:41:42 changed by anonymous

home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home home

09/06/06 00:44:42 changed by Paula

  • severity changed from blocker to 1.
  • cc set to Paula.
  • component changed from ActiveRecord to 1.
  • summary changed from encoding support for MySQL adapter to Paula.
  • priority changed from high to 1.
  • version changed from 0.14.3 to 1.
  • milestone changed from 1.1 to 1.
  • keywords changed from mysql encoding charset to Paula.
  • type changed from defect to 1.