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
'programing' 카테고리의 다른 글
루비: 문자열을 부울로 변환하는 방법 (0) | 2023.06.08 |
---|---|
파이썬에서 modb를 어떻게 계산합니까? (0) | 2023.06.08 |
ASP.NET 응용 프로그램이 웹 서비스에 연결할 수 있는 동시 연결 수를 제한하는 것은 무엇입니까? (0) | 2023.06.08 |
시스템을 대체합니다.Web.Http 유틸리티.UrlEncode/UrlDecode ASP.NET 5 (0) | 2023.06.08 |
생성된 변수, 함수 등을 통역사의 메모리에서 삭제할 수 있는 방법이 있습니까? (0) | 2023.06.08 |