programing

C#으로 작성된 UTF-8 CSV 파일에는 Excel의 â 문자가 표시됩니다.

stoneblock 2023. 6. 8. 19:15

C#으로 작성된 UTF-8 CSV 파일에는 Excel의 â 문자가 표시됩니다.

C#을 사용하여 CSV 파일을 생성하고 Microsoft Excel에서 열면 £와 같은 특수 기호 앞에 â 문자가 표시됩니다.

메모장++에서 â의 16진수 값은 C2입니다.

그래서 파일에 £ 기호를 쓰기 전에 다음을 시도했습니다.

    var test = "£200.00";
    var replaced = test.Replace("\xC2", " ");

    StreamWriter outputFile = File.CreateText("testoutput.csv"); // default UTF-8
    outputFile.WriteLine(replaced);
    outputFile.Close(); 

Excel에서 CSV 파일을 열 때도 £ 기호 앞에 "â" 문자가 표시됩니다(16진수는 \xC2 \xA3). 아무런 차이가 없습니다.

다른 인코딩을 사용해야 합니까?아니면 제가 뭔가를 놓치고 있나요?

@Evk와 @Mortalier 감사합니다. 당신의 제안은 저를 올바른 방향으로 이끌었습니다.

http://thinkinginsoftware.blogspot.co.uk/2017/12/correctly-generate-csv-that-excel-can.html 시작 부분에 UTF-8 BOM이 명시적으로 포함되도록 StreamWriter를 업데이트해야 했습니다.

코드가 다음과 같이 변경되었습니다.

StreamWriter outputFile = File.CreateText("testoutput.csv"); // default UTF-8

받는 사람:

StreamWriter outputFile = new StreamWriter("testoutput.csv", false, new UTF8Encoding(true))

또는: 여기서 찾은 또 다른 해결책은 라틴 문자만 사용하는 경우 다른 인코딩을 사용하는 것이었습니다.http://theoldsewingfactory.com/2010/12/05/saving-csv-files-in-utf8-creates-a-characters-in-excel/

StreamWriter outputFile = new StreamWriter("testoutput.csv", false, Encoding.GetEncoding("Windows-1252"))

제 시스템은 라틴 문자와 비라틴 문자를 사용할 가능성이 높기 때문에 UTF-8 BOM 솔루션을 사용하고 있습니다.

최종 코드

    var test = "£200.00";
    StreamWriter outputFile = new StreamWriter("testoutput.csv", false, new UTF8Encoding(true))
    outputFile.WriteLine(test);
    outputFile.Close();

당신의 코드를 시도해봤는데 엑셀에 AW가 감방에 표시됩니다.그리고 LibreOfficeClac으로 csv를 열려고 했습니다.처음에는 AW도 있었지만, 가져올 때 프로그램에서 인코딩에 대해 물어볼 것입니다.UTF-8을 선택하면 £ 기호가 올바르게 표시됩니다.제 생각에는 사실 당신의 인코딩에 문제가 있는 것 같습니다.

이는 Excel https://superuser.com/questions/280603/how-to-set-character-encoding-when-opening-excel 에 도움이 될 수 있습니다.

언급URL : https://stackoverflow.com/questions/48804039/utf-8-csv-file-created-with-c-sharp-shows-%c3%82-characters-in-excel