不兼容的字符编码:渲染操作中的UTF-8和ASCII-8BIT

时间:2015-04-23 08:54:26

标签: ruby ruby-on-rails-4 encoding utf-8

  

ActionView :: Template :: Error(不兼容的字符编码:UTF-8   和ASCII-8BIT):app / controllers / posts_controller.rb:27:在'new'

  # GET /posts/new
  def new
    if params[:post]
      @post = Post.new(post_params).dup
      if @post.valid?
        render :action => "confirm"
      else
        format.html { render action: 'new' }
        format.json { render json: @post.errors, status: :unprocessable_entity }
      end
    else
      @post = Post.new
      @document = Document.new
      @documents = @post.documents.all
      @document = @post.documents.build
    end

我不知道为什么会这样。

2 个答案:

答案 0 :(得分:0)

  • 确保 application.rb 文件中有config.encoding = "utf-8"
  • 确保您使用的是'mysql2' gem mysql gem
  • # encoding: utf-8放在rake文件的顶部。
  • environment.rb 文件中的Rails.application.initialize!行以上,添加以下两行:

    Encoding.default_external =编码:: UTF_8

    Encoding.default_internal =编码:: UTF_8

此处的解决方案:http://rorguide.blogspot.in/2011/06/incompatible-character-encodings-ascii.html

如果上述解决方案没有帮助,那么我认为您将Haml模板的一部分复制/粘贴到文件中,或者您正在使用非Unicode /非UTF-8友好编辑器。

如果您可以在UTF-8友好编辑器中从头开始重新创建该文件。任何平台都有很多,看看这是否能解决您的问题。

有时您可能会收到此错误:

  

不兼容的字符编码:ASCII-8BIT和UTF-8

这通常是因为您尝试连接两个字符串,而一个字符包含不映射到另一个字符串的字符集的字符。 ISO-8859-1中的字符在UTF-8中没有等效字符,反之亦然,如何处理字符串连接与这些不兼容性需要程序员介入。

答案 1 :(得分:0)

我正在升级我的rails和spree,错误实际上来自缓存

删除缓存为我解决了问题

rm -rf tmp/cache