2009-08-12 4 views
1

이 질문은 자바와 루비를 포함하고 있습니다. Ruby에서 전화를 걸 수있는 java 프로그램이 있습니다.유니 코드가 왜 passenger에서 작동하지 않습니까?

이 코드는 수정없이 완전히 merb에서 작동합니다.

이 코드는 $ KCODE = "UTF8"을 설정하면 irb에서 완벽하게 작동합니다.

필자는 phusion 여객기에서 작동하지 못합니다. 프로덕션 서버가 승객보다 아래에 있기 때문에 이것은 문제가됩니다.하지만 대부분의 시간을 잡종 또는 내 컴퓨터에서 처리합니다.

설정이 매우 간단합니다.

다음은 Java 코드입니다. import java.io. ; 가져 오기 java.util.;

public class Simple { 

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

} 

지금 여기에 루비 코드 :

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 서브 프로세스가 시작되는 환경이 올바르게 구성되어 있지 않을 수 있습니다. brute-force 접근법은 ENV 해시를 사용하여 환경 변수를 주입하는 것입니다. 예를 들어 :

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

또한 아마도 환경을 읽는 UTF8을 대신 강제 Java 프로그램 자체에 대한 수정을 올바른 환경을 설정하고 거기에서 작동하거나 Java 프로그램에 대한 래퍼를 작성 할 수 있습니다 .

+0

잘못되었습니다 ... 저는 당신에게 열쇠 빚이 있습니다. 캐나다에 있습니다. – eyberg

관련 문제