rails .rb文件中关于中文错误问题

刚学rails不久,遇到个问题,就是在 我的 post_controller.rb 里写中文(非注释)就会出错,我用的是ubuntu9.10, gvim , fileeconding=utf8,
在网上找了很久,没找到解决方法,请教各位大侠。

错误信息:

..../posts_controller.rb:49: invalid multibyte char (US-ASCII)
..../posts_controller.rb:49: syntax error, unexpected $end, expecting keyword_end
flash[:notice] = 'Post was successfully created.中文'

就是“中文”这两个字那出的错。

另:在页面上输入中文,保存到数据库,再显示到页面,是不会出错的,而且中文也正常显示。
在 .rb 文件里注释里写中文也不会出错。

这到底是为什么啊???

lz 的 ruby 是什么版本的?

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

如果是 ruby 1.9 或者更高版本(1.8.7 可能也可以),在 posts_controller.rb 的文件开头加上一行魔法注释就行了:
[code="ruby"]#coding: utf-8[/code]

如果是 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 翻译吧 ……

不能写中文,ruby的bug!
看看bug#1238 :[url=http://redmine.ruby-lang.org/issues/show/1238]http://redmine.ruby-lang.org/issues/show/1238[/url]

rb编码是否是UTF8([size=medium]用记事本查看[/size])。

如果不是,则要改成utf8,方法是使用记事本或editplus等编辑器另存一下,
另存时下面有个编码选项,改为UTF8保存即可。

你使用vim,设置一个vim的编辑编码
[code="java"]
set langmenu=none
language messages zh_cn.utf-8
set fileencodings=utf-8
set fileencoding=utf-8
set encoding=utf8[/code]

详细说明看看这个:http://www.2maomao.com/blog/rails-vim-utf-8/

在ruby文件头添加

[code="ruby"]$KCODE = 'u'[/code]

[quote]怎么改都改不过来[/quote]
用记事本另存为utf-8