Ren*_*ené 4 ruby linux ubuntu ruby-on-rails-3
如何将法语字符放在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.' }
Run Code Online (Sandbox Code Playgroud)
在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>
Run Code Online (Sandbox Code Playgroud)
Ruby有一个特殊的语法来声明文件的字符集:如果你使用多字节字符,你可以在文件的最顶部使用这一行,没有前面的空格
# encoding: utf-8
Run Code Online (Sandbox Code Playgroud)
从Ruby 1.9开始,Strings总是附加一个编码.因此Ruby可以正确处理多字节字符,并能够在不同的编码之间进行转换.Ruby的早期版本基本上将字符串作为字节数组处理,这使得几乎不可能正确处理多个编码.
默认情况下,Ruby 1.9在任何地方使用US_ASCII编码,而Ruby自2.0以来默认使用UTF-8.
通常,如果您运行的是Ruby 1.9,则只需更改任何内容.如果您的编辑器保存了UTF-8文件并且您运行的是Ruby> = 2.0,那么默认情况下一切都会正常.
但是,在1.9以后的所有Ruby版本中,您都可以更改使用的编码.您可以设置三种不同的默认编码(默认情况下,它们都使用相应的Ruby默认编码,即US_ASCII
1.9 UTF-8
及更高版本,在Ruby 2.0和更新版本上):
前两种编码可以这样设置
Encoding.default_internal = 'UTF-8'
Encoding.default_external = 'UTF-8'
Run Code Online (Sandbox Code Playgroud)
然后在当前Ruby进程生命周期的所有操作期间使用它们.
可以使用ruby文件的第一行(或shebang下面)中的"魔术注释"来设置源编码,如此
# encoding: UTF-8
Run Code Online (Sandbox Code Playgroud)
或者通过启动您的脚本使用ruby -KU
它也将默认编码设置为UTF-8.你也可以在shebang中设置它.在您的特定情况下,您必须至少使用提供的机制之一设置源编码.
有关Ruby 1.9中字符串编码的更多信息和背景,请参阅http://graysoftinc.com/character-encodings,特别是http://graysoftinc.com/character-encodings/ruby-19s-three-default-encodings.
归档时间: |
|
查看次数: |
3465 次 |
最近记录: |