【问题标题】:what to use latin1 or utf8 for rails 3 & ruby 1.8.7对于 rails 3 和 ruby​​ 1.8.7 使用什么 latin1 或 utf8
【发布时间】:2011-06-14 04:13:53
【问题描述】:

我发现utf-8是标准的,但是Mysql并不完全支持utf-8(4bytes)。

现在这是我的情况。 我的 mysql 排序变量显示 latin1 但 "database.yml"(rails) 中的编码机制是 utf8 。

我有一个包含大约 20 个表和每个表中大约 1k 行的数据库。 我正在使用 Mysql 5.0 、 ruby​​ 1.8.7 和 rails 3 。

我想支持至少一些不可打印的章程。 最好的选择是什么?

  1. 我是否应该将整个数据库更改为 utf-8(转换很痛苦,而且 mysql 完全不支持 utf-8)。
  2. 我是否应该将“database.yml”中的编码机制更改为 latin1(新设置是否与已存储的旧数据兼容)。
  3. 还有其他解决方案吗?

谢谢。

【问题讨论】:

    标签: mysql ruby-on-rails-3 encoding


    【解决方案1】:

    我认为 database.yml 中的 :encoding 字段 正是创建新数据库时使用的。

    如果您更改此字段,它不会破坏您的应用程序

    (实际上我认为它不会做任何事情,除非你使用rake db:create

    我建议,如果您的应用针对美国或西欧以外的任何人 你应该使用utf8。 令人惊讶的是 Ubuntu 仍然默认为 latin1。

    这可能会针对空间进行“优化” 但是对于几乎所有拥有面向客户的网站的人来说,这都会带来麻烦。

    google 上有各种链接可以了解如何将数据库转换为 UTF8 http://www.devcha.com/2008/03/convert-existing-mysql-database-from.html

    类似

    /* convert the default character set (used for new tables) */
    ALTER DATABASE db_name DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
    
    /* convert a specific table */
    ALTER TABLE db_table CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
    

    当然……

    始终备份您的数据,并首先在暂存机器上试用

    【讨论】:

    • 1.如果我只是改变编码机制,它开始支持不可打印字符,所以它当然会做一些事情。 2. 我觉得更改整个数据库有风险,因为该网站非常活跃。
    • 正如我所说。您需要有一个复制实时环境的登台服务器。确保它有同样的问题。然后运行迁移。确保有效,并注意花费了多长时间。如果可以迁移与您的实时系统完全相同的系统,那么您的实时系统也可以迁移。只要您在执行此操作之前备份数据,即使发生意外,您所损失的只是一点正常运行时间。
    猜你喜欢
    • 2012-02-08
    • 2012-09-07
    • 1970-01-01
    • 2018-09-14
    • 1970-01-01
    • 2011-09-23
    • 2011-02-12
    • 1970-01-01
    • 2016-03-12
    相关资源
    最近更新 更多