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 如何通过代码传输视频到亚马逊平台
  • ¥15 php查询mysql数据库并显示至下拉列表中
  • ¥15 freertos下使用外部中断失效
  • ¥15 输入的char字符转为int类型,不是对应的ascall码,如何才能使之转换为对应ascall码?或者使输入的char字符可以正常与其他字符比较?
  • ¥15 devserver配置完 启动服务 无法访问static上的资源
  • ¥15 解决websocket跟c#客户端通信
  • ¥30 Python调用dll文件输出Nan重置dll状态
  • ¥15 浮动div的高度控制问题。
  • ¥66 换电脑后应用程序报错
  • ¥50 array数据同步问题