rails .rb文件代码中有中文报错

2010-03-28 night_stalker (架构师)
lz 的 ruby 是什么版本的?

在命令行中输入 ruby -v 看看。

如果是 ruby 1.9 或者更高版本(1.8.7 可能也可以),在 posts_controller.rb 的文件开头加上一行魔法注释就行了:
Ruby 代码

#coding: utf-8


如果是 ruby 1.9 而且加了魔法注释还有问题,那么就是文件编码不对。。。 gvim 比较熟的话可以装 fencview 插件,打开文件后在 菜单 -> 工具 -> encoding 可以转。或者用别的有“编码”选项的编辑器如 netbeans 转一下(gedit 没用过,应该也可以的)。

ps1: $KCODE = 'u' 只是修改了字符串和正则的一些辨认字符的 API,对这种文题不管用的 …… 而且 rails 已经针对 ruby 1.8.x 处理了 $KCODE,不需要自己添加。

ps2:(和本问题无关)ubuntu 中文版比较讨厌,文件系统默认 gb18030 编码,可以转换成 utf-8。

ps3:(这个方法没解决问题 ……)如果是 ruby 1.9 而且没弄明白文件的编码,可以把魔法注释改成:
#coding: binary
结果是:程序能跑,但是显示乱码。。。

ps4:如果 ruby 的版本是 1.8.6,我就不知道为什么了,可以归结为灵异事件 …… 用rails 的 I18n 翻译吧 ……
提问者对于答案的评价:
解决方法: 在文件头上加
#coding: utf-8




不能写中文,ruby的bug!
看看bug#1238 :http://redmine.ruby-lang.org/issues/show/1238
Anddy (架构师) 2010-03-27
rb编码是否是UTF8(用记事本查看)。

如果不是,则要改成utf8,方法是使用记事本或editplus等编辑器另存一下,
另存时下面有个编码选项,改为UTF8保存即可。
Anddy (架构师) 2010-03-27
你使用vim,设置一个vim的编辑编码
Java 代码

   1. set langmenu=none 
   2. language messages zh_cn.utf-8 
   3. set fileencodings=utf-8 
   4. set fileencoding=utf-8 
   5. set encoding=utf8 

set langmenu=none
language messages zh_cn.utf-8
set fileencodings=utf-8
set fileencoding=utf-8
set encoding=utf8



详细说明看看这个:http://www.2maomao.com/blog/rails-vim-utf-8/
Anddy (架构师) 2010-03-27
在ruby文件头添加

Ruby 代码

   1. $KCODE = 'u' 

$KCODE = 'u'

Anddy (架构师) 2010-03-28
引用
怎么改都改不过来

用记事本另存为utf-8

你可能感兴趣的:(ubuntu,vim,Ruby,Netbeans,Rails)