hanxing0331 2010-03-27 21:57
浏览 259
已采纳

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 文件里注释里写中文也不会出错。

这到底是为什么啊???

  • 写回答

6条回答 默认 最新

  • xenocide 2010-03-28 22:47
    关注

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?

悬赏问题

  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能
  • ¥15 jmeter脚本回放有的是对的有的是错的
  • ¥15 r语言蛋白组学相关问题