programing

Javascript 내보내기 CSV 인코딩 utf-8 문제

linuxpc 2023. 4. 11. 21:46
반응형

Javascript 내보내기 CSV 인코딩 utf-8 문제

javascript 배열을 CSV 파일로 내보내고 다운로드해야 합니다.I did it but 'ı,ü,ö,ğ,ş' this characters looks like 'ı ü à ğ ÅŸ' in the CSV file.이 사이트에서 추천하는 솔루션을 여러 번 시도해 봤지만 효과가 없었습니다.

코드 스니펫을 추가했는데, 이 문제를 해결할 수 있는 사람이 있나요?

var csvString = 'ı,ü,ö,ğ,ş';

var a = window.document.createElement('a');
a.setAttribute('href', 'data:text/csv; charset=utf-8,' + encodeURIComponent(csvString));
a.setAttribute('download', 'example.csv');
a.click();

이것은 어떤 프로그램이 오픈하고 있는가에 따라 달라집니다.example.csv텍스트 편집기를 사용하여 인코딩은UTF-8문자 형식이 잘못되지 않습니다.단, 을 사용하여Excel디폴트 부호화CSVANSI가 아니라UTF-8그래서 강요하지 않고Excel사용 안 함ANSI그렇지만UTF-8인코딩으로 문자의 형식이 잘못되었습니다.

Excel를 사용하여 강제할 수 있다UTF-8위해서CSV을 붙여서BOM(바이트 순서 마크)를 파일의 첫 번째 문자로 지정합니다.디폴트BOM위해서UTF-8바이트 시퀀스입니다.0xEF,0xBB,0xBF그래서 간단하게 생각할 수 있다."\xEF\xBB\xBF"스트링의 첫 번째 바이트가 솔루션이 됩니다.하지만 너무 간단하지 않습니까?;-) 문제는 자바스크립트가 이러한 바이트를 문자로 받아들이지 않도록 강제하는 방법입니다."솔루션"은 "범용 BOM"을 사용하고 있습니다."\uFEFF"특수문자(JavaScript)에 기재되어 있습니다.

예:

var csvString = 'ı,ü,ü,ğ,ş,#Hashtag,ä,ö';
var universalBOM = "\uFEFF";
var a = window.document.createElement('a');
a.setAttribute('href', 'data:text/csv; charset=utf-8,' + encodeURIComponent(universalBOM+csvString));
a.setAttribute('download', 'example.csv');
window.document.body.appendChild(a);
a.click();

문자열/블럽에 UTF-8 BOM 추가도 참조하십시오.

이것을 사용하면, 부호화가 올바르게 됩니다.단, 이는 콤마가 기본 목록 구분 기호일 경우에만 올바르게 작동합니다.Windows로케일 설정.그렇지 않은 경우, 예를 들어 세미콜론이 기본 목록 구분 기호인 경우Windows그러면 모든 내용이 쉼표로 구분되지 않고 첫 번째 열에 표시됩니다.그런 다음 세미콜론을 구분 기호로 사용해야 합니다.CSV또한, 이것은 또 다른 문제이며, 그 결과, 이 시스템을 사용하지 않는 것으로 결론지어진다.CSV직접 생성할 수 있는 라이브러리를 사용하는 것 이외에는Excel파일(*.xls또는*.xlsx).

언급URL : https://stackoverflow.com/questions/42462764/javascript-export-csv-encoding-utf-8-issue

반응형