代码之家  ›  专栏  ›  技术社区  ›  pjmorse

为什么我的SproutCore开发服务器会删除“US-ASCII中的无效字节序列”的连接?

  •  4
  • pjmorse  · 技术社区  · 14 年前

    这是堆栈:sproutcore 1.0.1046。Ruby 1.9.1,在rvm中。薄1.2.7.雷神0.138。机架1.2.1事件机器0.12.10.ErBui2.2.6。

    当我开始 sc-server 在任何应用程序上,我对该服务器的第一个请求都会在控制台日志中生成:

    ArgumentError: invalid byte sequence in US-ASCII
    

    …跟着 this stack trace . (我列出了出现在上面的堆栈跟踪中的宝石,但在与堆栈跟踪相同的gist中有一个完整的宝石列表。)

    对错误消息的研究指出,这是Ruby1.9的一个常见问题,但堆栈跟踪表明问题出现在某个gem中。

    我有:

    • 升级了我的操作系统(Mac OS X 10.5到10.6),以获得最新版本 gcc 苹果提供。
    • 重新安装了RVM。
    • 重新安装了Ruby。
    • 重新安装了所有相关的gems。

    但我仍然在一个系统上有这个问题,但在另一个系统上没有。(注意,有几个开发人员正在处理这个代码,我是唯一一个看到这个问题的人。我99%确定这不是我们的代码。)我想我要说的是,我已经清理和重建了很多宝石,试图隔离或消除这个故障,但我仍然没有摆脱它。

    下一步我该去哪里?

    5 回复  |  直到 12 年前
        1
  •  5
  •   Juan Pinzon    14 年前

    您的bash环境中有一些特殊的设置,它将ruby设置为使用us-ascii,这发生在我试图从远程终端执行sc服务器时…我不太确定它是什么,但它不使用UTF-8,所以会遇到麻烦。

        2
  •  2
  •   rogerdpack    14 年前

    您可能还可以更改encoding.default\u external

        3
  •  1
  •   John McGrath    14 年前

    非常感谢您提供的encoding.default_外部建议。尽管正确设置了magic注释和环境变量,但我还是遇到了同样的问题。在rails 2.3.9中,我在application_controller.rb中的filter之前添加了这个,解决了这个问题:

    def set_encoding
      Encoding.default_external = 'UTF-8'
    end
    
        4
  •  1
  •   Harmon    13 年前

    我在使用Ruby1.9.2的Rails2.3.8应用程序中显示的RSS提要也有同样的问题。在这里提到过滤器技术之前,我的问题并没有被应用程序“controller.rb”解决。修复方法是将以下内容放入“rails-root/config/initializers/string-encodings.rb”中:

    encoding.default_external='utf-8'

    这在我的网站范围内有效,而不是在控制器级别。

        5
  •  1
  •   Jens Boonen    12 年前

    在我的例子中,argumentError发生在envolves ruby的net ssh(ruby 1.9.2p290,net ssh 2.3.0)的capistrano部署调用期间。上面提到的解决方案都不起作用,到目前为止,我还没有读到其他任何原因:即“密钥文件中的奇怪字符”等。

    最后,我在注释中发现了一个非ASCII字符!!)我的ASCII编码~/.ssh/config文件中的行。答对了!