【问题标题】:Why is my unicode not working under passsenger?为什么我的 unicode 在乘客下不起作用?
【发布时间】:2010-11-19 02:14:41
【问题描述】:

本题包含java和ruby。 我有一个从 ruby​​ 调用的 java 程序。

此代码在 merb 下完美运行,无需任何修改。

通过设置 $KCODE="UTF8",此代码将在 irb 下完美运行。

在我的一生中,我无法让它在 phusion 乘客下工作 - 这是一个问题,因为我们的生产服务器处于乘客之下,但我大部分时间都花在我的开发机器上的 mongrel 或其他东西上。

设置非常简单。

这里是java代码: 导入 java.io.; 导入 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) 并获得完全相同的测试数据——就像我说的那样,如果您设置 KCODE,这在 merb 下工作正常,在 irb 下工作正常但它在乘客下不起作用

更新 -- 简化一切

【问题讨论】:

    标签: java ruby unicode passenger phusion


    【解决方案1】:

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

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

    您可能还必须为您的 Java 程序编写一个包装器,以建立正确的环境并从那里工作,或者可能对 Java 程序本身进行修改,强制使用 UTF8 而不是读取环境。

    【讨论】:

    • err... 我欠你一把钥匙 -- 下次我在加拿大
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-02
    • 2023-03-19
    相关资源
    最近更新 更多