在Ruby文件中放置法语(带重音符号的)字符

4
可能重复:
使用Rails和Ruby 1.9出现无效的多字节字符(US-ASCII) 我怎样才能在Ruby文件中输入法文字符呢?这是一个错误:
SyntaxError in ArticlesController#show 

    /.../app/controllers/articles_controller.rb:47: invalid multibyte char (US-ASCII)
    /.../app/controllers/articles_controller.rb:47: invalid multibyte char (US-ASCII)
    /.../app/controllers/articles_controller.rb:47: syntax error, unexpected $end, expecting '}'
    ...@article, notice: 'Article a été créé avec succes.' }

在HTML文件中,在标签内添加以下代码即可支持特殊字符的显示:
<!DOCTYPE html>

<head>
<meta http-equiv="content-type" content="text/html"; charset="utf8">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<meta http-equiv="Content-Style-Type" content="text/css">
  <!-- ... autres mentions de l'entête de fichier ... -->
</head>

你在编辑器中将文件编码更改为UTF-8了吗? - BZ1
3个回答

6

Ruby有一种特殊的语法来声明文件的字符集:如果你正在使用多字节字符,你可以在文件的顶部使用以下这行代码,没有前导空格。

# encoding: utf-8

谢谢,我会承担未来问题的责任。 - René

5
自从Ruby 1.9版本以后,字符串总是附带有一个编码。因此,Ruby可以正确处理多字节字符并能够在不同的编码之间进行转换。先前的Ruby版本基本上将字符串处理为字节数组,这使得处理多种编码变得几乎不可能。
默认情况下,Ruby 1.9在任何地方都使用US_ASCII编码,而自2.0以来的Ruby默认使用UTF-8编码。
一般来说,只有在运行Ruby 1.9时才需要更改任何内容。如果您的编辑器保存UTF-8文件且您正在运行Ruby >= 2.0,则默认情况下一切都会很好。
尽管如此,在自1.9以来的所有Ruby版本中,都可以更改所使用的编码。您可以设置三个不同的默认编码(它们默认使用各自的Ruby默认编码,即1.9上使用的是US_ASCII,Ruby 2.0及更高版本上使用的是UTF-8):
- 内部编码:将所有字符串转换为的默认编码。这是字符串内部保存的编码。 - 外部编码:读取文件时,假定其为该编码。 - 源编码:假定Ruby源代码是用该编码编写的。
前两个编码可以像这样设置:
Encoding.default_internal = 'UTF-8'
Encoding.default_external = 'UTF-8'

这些对象在当前 Ruby 进程的生命周期中的所有操作中都会被使用。

源编码可以通过在 Ruby 文件的第一行(或 shebang 下面)使用“魔法注释”来设置,如下所示:

# encoding: UTF-8

或者使用 ruby -KU 启动脚本,这也将默认编码设置为 UTF-8。您还可以在 shebang 中设置。在您的特定情况下,您必须至少使用提供的机制之一设置源编码。
请参见http://graysoftinc.com/character-encodings,特别是http://graysoftinc.com/character-encodings/ruby-19s-three-default-encodings,了解有关 Ruby 1.9 中字符串编码的更多信息和背景。

谢谢,这很完美。我在 program.rb 的第一行加入了 #encoding: utf-8。 - René

0

你使用哪种编码方式?

你可以在头部定义源文件的编码方式。或者更好的方法是:如果你使用ASCII以外的字符,你必须定义它。

Alex已经提到了。

#encoding: utf-8

如果您不使用UTF-8,而是使用本地的法语代码页,您可以在源代码的第一行中使用此标头:

#encoding: cp1252

当你读取和保存文件时,可能会遇到其他编码错误。有关详细信息,请参阅http://blog.grayproductions.net/articles/ruby_19s_three_default_encodings


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接