2014-02-16 2 views
1

C# BinaryWriter 및 BinaryReader 클래스를 사용하여 이진 파일을 작성하고 읽으려고합니다. 문자열을 파일에 저장할 때 올바르게 저장하고 있지만 읽으려고하면 문자열 내의 모든 대체 위치에 '\ 0'문자가있는 문자열이 반환됩니다.C#의 BinaryReader는 문자열의 모든 문자 사이에서 ' 0'을 읽습니다.

public void writeBinary(BinaryWriter bw) 
{ 
    bw.Write("Hello"); 
} 

public void readBinary(BinaryReader br) 
{ 
    BinaryReader br = new BinaryReader(fs); 
    String s; 
    s = br.ReadString(); 
    } 

여기 값지고로서 S = "H \ 0E \ 0리터 \ 0리터 \ 0o에서 \ 0": 여기

코드이다.

+3

[모든 소프트웨어 개발자가 절대적으로 최소로 절대적으로, 절대적으로 유니 코드와 문자 집합에 대해 알아야합니다 (변명의 여지가 없습니다!)] (http://joelonsoftware.com/articles/Unicode.html) – GSerg

+0

문자 인코딩을 고려해야합니다 @CSerg가 지시 했으므로. .NET의 모든 문자열은 여러 스크립트 (로마자, 일본어, 히브리어 등)를 지원하는 UTF8 인코딩 (문자 당 2 바이트)을 사용합니다. – wdosanjos

답변

3

파일을 읽고 쓸 때 다른 인코딩을 사용하고 있습니다.

파일을 쓸 때 UTF-16을 사용하므로 각 문자는 16 비트 문자 코드, 즉 2 바이트로 끝납니다.

파일을 읽을 때 UTF-8 또는 일부 8 비트 인코딩을 사용하므로 각 바이트가 하나의 문자로 끝납니다.

하나의 인코딩을 선택하고 파일 읽기 및 쓰기에 모두 사용하십시오.

+0

http://stackoverflow.com/questions/496321/utf8-utf16-and-utf32 – wdosanjos