2012-06-27 2 views
1

나는 다음과 같은 문제가 : 나는 어떤 엑셀 시트을 가지고 DOS-CSV 형식으로 내보낼해야합니다 (어떤 이유로). 그 결과, 독일어 (Ä, Ü, ä, ü, ö)은 올바르게 내보내지지 않습니다. 다음 단계에서 이러한 CSV 파일은 Winform 응용 프로그램으로 가져와야합니다. 수입시에 해당 문자 Ä, Ü, Ö, ä, ü, ö를 되 찾을 수 있습니까?DOS-CSV 가져 오기 (Ä, Ü, Ö, ä, ü, ö)

답변

4

DOS-CSV 형식을 선택하면 Excel에서 437 코드 페이지 (found that here)를 사용하여 문서를 인코딩합니다. 당신은 코드를 조금 사용하여 UTF-8로 다시 변환 할 수 있습니다

Encoding dosEncoding = Encoding.GetEncoding(437); 
string original = String.Empty; 

using (StreamReader sr = new StreamReader(@"D:\Path\To\output.csv", dosEncoding)) 
{ 
    original = sr.ReadToEnd(); 
    sr.Close(); 
} 

byte[] encBytes = dosEncoding.GetBytes(original); 
byte[] utf8Bytes = Encoding.Convert(dosEncoding, Encoding.UTF8, encBytes); 

string converted = Encoding.UTF8.GetString(utf8Bytes); 

은 내가 DOS는 CSV Excel에서 파일 포맷으로 저장 한 후 셀에 Ä,Ü,Ö,ä,ü,ö를 넣고 이것을 테스트했습니다. 이 문서를 보면 엑셀이 Ž,š,™,„,,”으로 바뀌었다.

위 코드를 실행하면 Ä,Ü,Ö,ä,ü,ö으로 되돌려졌습니다.

관련 문제