2012-09-09 2 views
0

나는 C# 프로그램에 의해 생성 된 이진 파일을 읽으려고하는데 문제가 발생했습니다. C#은 기본적으로 문자열을 UTF-7로 이진 파일로 인코딩하고 Java는 UTF-8을 사용합니다. 이것은 문자열이 제대로로드되지 않음을 의미합니다.이진 파일, 다른 인코딩 문자열을 읽을

나는 어떻게 UTF-8 대신에 UTF-7로 문자열을 읽는 지 궁금해했다. 나는 또한 내가 플로트와 비슷한 문제가 있다는 것을 알아 차렸다. C#과 Java가 다르게 처리합니까? 그렇다면 어떻게 Java에서 올바르게 읽습니까?

편집 : C# 프로그램의 BinaryWriter 클래스와 Java의 DataInputStream 클래스를 사용하고 있습니다.

+1

님, 뭐라 구요? 질문을 좀 더 구체적으로하기 위해 우리와 공유 할 수있는 코드 또는 내용이 있습니까? –

답변

1

달리 지정하지 않는 한 C#은 UTF-8 인코딩을 사용합니다.

수정 설명서가 잘못되었습니다. 얼마나 많은 알아

protected void Write7BitEncodedInt(int value) { 
     // Write out an int 7 bits at a time. The high bit of the byte, 
     // when on, tells reader to continue reading more bytes. 
     uint v = (uint) value; // support negative numbers 
     while (v >= 0x80) { 
      Write((byte) (v | 0x80)); 
      v >>= 7; 
     } 
     Write((byte)v); 
    } 

당신은 순서대로 포트에 자바 코드가 필요합니다 소스를 보면
BinaryWriter 다음 코드를 사용하여 7 비트 인코딩 정수로 문자열 길이를 기록 읽을 바이트 수.

+0

설명서에 따르면 UTF-7입니다. http://msdn.microsoft.com/en-us/library/yzxa6408.aspx – Frozendragon

+3

@Frozendragon : 틀렸어. long을 UTF7을 사용하여 인코딩 된 정수로 쓰고 작성자의 인코딩을 사용하여 문자열을 씁니다. (기본적으로 UTF8) – SLaks

+0

Javas가 UTF-8로 인코딩 된 문자열로 읽을 수 없습니까? – Frozendragon