2011-02-03 3 views
4

좀 러시아어 텍스트 기록하기 위해 노력하고있어 :구글 앱 엔진 인코딩

LOG.info("тестирование русского"); 

을하지만 (웹에서 볼 수) 대신에 질문 기호를 얻을 :

[앱 ID/앱 버전 ]. : 15 : 18 : 44,753 정보 [수업] - ??????????? ????????

Java 파일은 UTF-8 인코딩으로 저장됩니다. 모든 설정은 기본값입니다.

심지어 러시아어 문자로 UTF-8로 파일을 읽은 다음 그 파일에서 로그하려고 시도합니다. 인코딩도 잘못되었습니다.

+0

문자열을 유니 코드 유형으로 보내려고 했습니까? –

+0

기본 'Charset'이 GAE (외관상으로는 ASCII)에 어떤 것이 있는지 알고있는 것이 좋습니다. 이것은 내가 생각하기에 * 자신의 취향이나 Linux에서 실행중인 수정 된 Jetty 인스턴스입니다. – IAmYourFaja

답변

3

나는 히브리어 텍스트와 비슷한 문제가있다. 기본 인코딩으로 인해 발생했음을 알았습니다.

는이 코드를 사용, 기본 인코딩을 확인하려면 : 내 컴퓨터에서

OutputStreamWriter out = new OutputStreamWriter(new ByteArrayOutputStream()); 
String encoding = out.getEncoding(); 

을 인코딩은 "UTF8"입니다. GAE 서버에서는 "ASCII"입니다.

나는 내 코드에있는 모든 파일 리더를 교체하여 문제를 해결 :

new InputStreamReader(new FileInputStream(file), "UTF8")); 

이 기본 인코딩을 무시하고 UTF8로 모든 입력 파일을 열 자바를 알려줍니다.

+0

멋지다, 나는 다양한 접근법을 시도했지만,이 것은 정말 도움이되었다! – heroin

1

시도해보십시오. 외관상으로는 GAE는 자동 감지 인코딩 시도하고 실패합니다. 심지어 상수 문자열이 엉망이되었습니다

public class Util { 
    public static String FixRussianString(String string){ 
     try { 
      return new String(string.getBytes("CP1251"), "UTF-8"); 
     } catch (UnsupportedEncodingException e) { 
      e.printStackTrace(); 
     } 
     return string; 
    } 
}