2009-08-12 53 views
1

这个问题包含java和ruby。 我有一个Java程序,我从ruby拨打电话。为什么我的unicode不能在乘客下工作?

此代码在Merb中完美工作,无需任何修改。

通过设置$ KCODE =“UTF8”,此代码将在irb下完美工作。

对于我的生活,我无法得到它在phusion乘客下工作 - 这是一个问题,因为我们的生产服务器是在乘客下,但我大部分时间都用在杂交机上或我的开发机器上。

设置非常简单。

这里是java代码: import java.io. ; import java.util。;

public class Simple { 

    public static void main(String[] args) throws Exception { 
     System.out.println("Ç"); 
    } 

} 

现在这里是Ruby代码:

IO.popen("java -cp \"/home/me/pass\" Simple") do |f| @blah = f.read end 

下时,乘客/ Merb的跑了,你应该能够做一个Merb.logger.error(@blah),并得到完全相同的TESTDATA - - 就像我说的,如果你设置的KCODE这个工程下Merb的罚款和下IRB不错,但它并没有下客

UPDATE工作 - 简化一切

回答

2

问题可能是Java子进程启动的环境未正确配置。暴力方法是使用ENV哈希注入环境变量。举个例子:

ENV['LC_CTYPE'] = 'en_US.UTF-8' 

您可能还编写Java程序的包装,其建立正确的环境,并从那里工作,或者修改,以强制UTF8,而不是阅读环境的Java程序本身。

+0

err ...我欠你一把钥匙 - nxt时间我在加拿大 – eyberg 2009-08-12 20:44:55

相关问题