ArgumentError (redundant UTF-8 sequence)

前几天在windows下用jruby创建了个应用,用了geokit的gem,连接的是sqlserver的数据库。
geokit在jruby下是由于使用的是jdbc-mssql的adapter,名称和matz ruby环境下的不一致,所以会报找不到adapter的错,只用把名称改为SQLSever就可以了。
但是还会出个问题,就是geokit中的geo_scope后不能跟limit,报distance field不识别,看sql log发现jdbc的limit通过生成row_num然后通过row_num in range的搞法搞定,这是jdbc adapter的个bug,懒得理他,直接用array slice搞定。
今天终于搞了个rhel 5的服务器,就忙着将程序迁移到rvm 的1.9.2上。同时改用tiny_tds加activerecord-sqlserver-adapter,结果碰到了ArgumentError (redundant UTF-8 sequence),都是在to_json的时候产生的。
google了一番,有人报这个错给active_support,结果support的开发人员认为这不是他们的bug,把issue的状态变为stale,不做任何更新。我一向认为开源人的敬业精神是不错的,所以这次也继续相信他。从配置上找原因。
对to_json的对象log之后发现都是乱码,觉得这是database connection的问题。查阅了tiny_tds和freetds的文档,发现根本问题是freetds的版本太落后,yum版的根本没有按照tiny的要求更新到9.2。所以把freetds的source 下下来,重新make了一番,问题就神奇般的OK了。
而且在matz ruby下,geokit的limit问题也解决了。
看样子,开源的东西本身还是值得信赖的,关键需要看你有没有能力组合起来。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值