【问题标题】:strange UTF-8 byte encoding issue with Rails, IE, PostgreSQL, delayed_jobRails、IE、PostgreSQL、delayed_job 出现奇怪的 UTF-8 字节编码问题
【发布时间】:2011-04-19 02:59:30
【问题描述】:

我看到 IE8、Rails 3.0.3、PostgreSQL 和 delay_job 的组合出现了一个相对奇怪(且难以诊断)的错误。

我的一个页面上有一个文本区域,在控制器中我延迟了一条消息,其中包含一个包含来自文本区域内容的对象的延迟作业:

SomeMailer.delay.send_message(message)

这在 Chrome、FF、Safari 上运行良好。但是在 IE8 only 中,only 当我在文本区域中实际输入文本时,看起来只有当我在文本区域中输入回车时(我认为) ,我从控制器收到此错误:

UTF-8 中的无效字节序列

这在我看来是当delayed_job 通过ActiveRecord 将作业序列化到数据库时,它不喜欢换行符(\r\n) 中的字符编码。有点难以弄清楚,因为我不知道这是 IE、Rails、delayed_job 还是 Postgres 问题。

旁注:我在本地收到此错误,但 Heroku 上似乎没有出现此错误 - 所以他们的数据库配置可能比我好?

环境

  1. 导轨 3.0.3
  2. Ruby 1.9.2
  3. Postgres 8.4 - 编码 UTF8,排序规则 en_US.UTF-8
  4. 延迟作业 2.1.4
  5. IE 8

任何想法都将不胜感激。

【问题讨论】:

    标签: ruby-on-rails internet-explorer postgresql utf-8 delayed-job


    【解决方案1】:

    您是否在发送到 IE8 的 HTML 中设置编码?例如:

    <!doctype html>    
      <head>
        <meta charset="utf-8">
      </head>
    

    其他浏览器可能正在处理丢失的信息,并在对您的文本区域中的数据进行编码时采用 UTF-8。

    【讨论】:

    • 是的,果然我的 meta 标签有错字,应该是:
    • 我应该指出我的示例来自一个 HTML5 应用程序,因此细节略有不同。无论如何,我很高兴它对你有用!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-23
    • 2011-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多