首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ASCII-8位的Rails编码

ASCII-8位的Rails编码
EN

Stack Overflow用户
提问于 2014-03-07 11:30:34
回答 1查看 6K关注 0票数 6

我知道这已经被问过好几次了,但是对我来说发生了一些奇怪的事情:

我有一个索引视图,其中呈现某些字符(带有重音的字母)会导致Rails引发异常。

代码语言:javascript
复制
incompatible character encodings: ASCII-8BIT and UTF-8

所以我检查了我的字符串编码,这实际上到处都是ASCII-8位,即使我在我的application.rb中将正确的编码设置为UTF-8。

代码语言:javascript
复制
config.encoding = "utf-8"

在我的enviroment.rb里

代码语言:javascript
复制
Encoding.default_external = Encoding::UTF_8
Encoding.default_internal = Encoding::UTF_8

在我的数据库里:

代码语言:javascript
复制
character_set_database = utf-8

在一些指南中作为建议。

字符串是用textarea字段插入的,并且不与任何其他已经插入的字符串连接。

奇怪的是:

  • 这只会在索引视图中发生,而在显示(相同的资源)中则不会发生。
  • 这只发生在这种模式(这是一个电子邮件,与主体和身体,但这不应影响任何事情)
  • 在我的开发环境中,设置str.force_encoding('utf-8')一切都很顺利,而在我的生产环境中,这是行不通的。(dev我使用Ruby2.0.0,在生产Ruby2.1.0中,Rails4和MySql都有)
  • # encoding utf-8设置文件视图也不起作用
  • “尝试”str.force_encoding('ascii-8bit').encode('utf-8')表示,Encoding::UndefinedConversionError "\xC3" from ASCII-8BIT to UTF-8是一个à,在使用body.force_encoding('ascii-8bit').encode('UTF-8', :invalid => :replace, :undef => :replace, :replace => '?')时,将所有重音字符替换为?,而str.force_encoding('iso-8859-1').encode('utf-8')显然生成了错误的字符( ?)。

所以我的问题是2:-为什么rails将字符串编码设置为ascii-8位?-如何解决这个问题?

我已经检查了这些问题(使用rails4的最新问题):

Rails View Encoding Issues

"\xC2" to UTF-8 in conversion from ASCII-8BIT to UTF-8

How to convert a string to UTF8 in Ruby

Encoding::UndefinedConversionError: "\xE4" from ASCII-8BIT to UTF-8

还有其他资源,但都没有用。

EN

回答 1

Stack Overflow用户

发布于 2014-09-30 20:46:05

您可能在源代码中有一个字符串文本,然后连接另一个字符串。例如:

代码语言:javascript
复制
some_string = "this is a string"

甚至是

代码语言:javascript
复制
some_string = "" #empty string

存储在some_string中的这些字符串将被标记为ASCII_8BIT,如果稍后执行如下操作:

代码语言:javascript
复制
some_string = some_string + unicode_string

那么你就会得到错误。也就是说,除非将这些字符串添加到创建字符串文本的文件的顶部,否则这些字符串将被标记为ASCI-8位:

代码语言:javascript
复制
#encoding: utf-8

该声明确定了源代码中字符串文本的默认编码。

我只是猜测,因为这个模式是这个问题的一个常见来源。要确定更多,需要比问题中的信息更多的信息--需要调试实际的源代码,才能准确地确定哪些字符串被标记为ASCII-8位,而您希望将其标记为UTF-8,以及该字符串的确切来源。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22248902

复制
相关文章

相似问题

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