首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL将UTF-8改为ASCII-8位

MySQL将UTF-8改为ASCII-8位
EN

Stack Overflow用户
提问于 2011-02-26 05:18:37
回答 2查看 2.2K关注 0票数 6

我有这样的场景。

电影片名:

代码语言:javascript
复制
$ title = "La leyenda de Osaín"

使用此编码:

代码语言:javascript
复制
$ title.encoding.name
>> UTF-8

然后我将其保存到数据库中。

代码语言:javascript
复制
$ movie = Movie.create!(:title => title)

然后我试着得到那部电影。

代码语言:javascript
复制
$ Movie.find(movie.id).title.encoding.name
>> "ASCII-8BIT"

$ Movie.find(movie.id).title
>> "La leyenda de Osa\xC3\xADn"

所有其他电影作品不包含特殊字符,如íû

这是我的database.yaml文件:

代码语言:javascript
复制
development:
  adapter: mysql
  database: development
  username: linus
  password: my_password
  socket: /tmp/mysql.sock
  encoding: UTF8

在使用forced_encoding时,我得到了正确的数据类型。

代码语言:javascript
复制
$ Movie.find(movie.id).title.force_encoding("UTF-8")
>> "La leyenda de Osaín"

我使用的是Rails 3.0.5.rc1和MySQL 14.14。

有人知道问题出在哪里吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-02-26 05:56:59

我找到了解决我的问题的办法。现在我使用较新的mysql2 gem。

我在Gemfile中用gem "mysql2"替换了gem "mysql"

然后,我在database.yaml文件中更改了数据库适配器。

发自:

代码语言:javascript
复制
development:
  adapter: mysql
  database: development
  username: linus
  password: my_password
  socket: /tmp/mysql.sock
  encoding: UTF8

至:

代码语言:javascript
复制
  development:
    adapter: mysql2
    database: development
    username: linus
    password: my_password
    socket: /tmp/mysql.sock
    encoding: UTF8

在我的案例中,我认为这是一个破坏交易的因素:

摘自

...It还强制对连接使用UTF-8或二进制[以及1.9...

中的所有字符串

票数 9
EN

Stack Overflow用户

发布于 2011-02-26 05:32:44

根据this link的说法,rails scaffolding在mysql中创建了varchar(255)列。The mysql documentation对varchar(255)的描述如下:

例如,

( 255 )列可以包含最大长度为255个字符的字符串。假设该列使用latin1字符集(每个字符一个字节),所需的实际存储空间是字符串的长度(L)加上一个字节来记录字符串的长度。

我的猜测是,数据库中的列类型不支持由多个字节表示的字符。This link有更多关于rails在处理unicode字符串时的常见缺陷的信息,更具体地说,它说您需要像这样以utf8格式创建数据库:

代码语言:javascript
复制
CREATE_DATABASE my_web_two_zero_development DEFAULT CHARSET utf8;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5122765

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档