2012-06-18 2 views
1

검정색 다이아몬드가있는 csv 파일의 문자에 문제가 있습니까? 중간에.유니 코드 문자를 읽으려는 csv 판독기 수정

나는 csv를 구문 분석하기위한 코드를 작성했지만, 왜 문자열이 유니 코드 문자를 제대로 읽지 못하는지 알지 못합니다. 아마도 내 구현과 관련이 있습니다.

StreamReader readFile = new StreamReader(path) 

try { 
    while ((line = readFile.ReadLine()) != null) { 
    string[] row = { "", "", "" }; 
    int currentItem = 0; 
    bool inQuotes = false; 
    if (skippedFirst && currentItem != 3) { 
     for (int i = 0; i < line.Length; i++) { 
     if (!inQuotes) { 
      if (line[i] == '\"') 
      inQuotes = true; 
      else { 
      if (line[i] == ',') 
       currentItem++; 
      else 
       row[currentItem] += line[i]; 
      } 
     } else { 
      if (line[i] == '\"') 
      inQuotes = false; 
      else 
      row[currentItem] += line[i]; 
     } 
     } 
     parsedFile.Add(row); 
    } 
    skippedFirst = true; 
    } 
+1

경우, 당신은 인코딩 부분 생성자를 사용할 수 있습니다 '. –

+0

'readFile'의 생성을 보여줍니다. – leppie

+0

@ Trustme-I 'mDoctor 답변으로 올려주세요! 저것은 훌륭하게 도와주었습니다. – ediblecode

답변

4

파일을 열 때 인코딩을 지정하십시오.

using (var sr = new StreamReader(@"c:\Temp\csvfile.csv", Encoding.UTF8)) { 
} 

또한 CSV 구문 분석에 대한 Filehelpers을 조사 할 수 있습니다 :`Encoding.UTF8 :`readFile`는`StreamReader`입니다

http://www.filehelpers.com/quick_start.html

+0

작동하지 않았어요. ReadLine()에 여전히 문자가 표시됩니다. – ediblecode

+1

csv가 utf8로 인코딩 되었습니까? 어쩌면 다른 것일 수도 있습니다. Latin1 또는 그와 비슷한 것. 인코딩 문제는 제대로 감지하는 것이 불가능하기 때문에 무엇인지 알고 있어야합니다. – mfussenegger

+0

감사합니다. Encoding.GetEncoding (1212)과 같은 것 같습니다. – ediblecode

관련 문제