JavaScript配列をCSVファイルにエクスポートしてダウンロードする必要があります。私はそれをしましたが'ı、ü、ö、ğ、ş'この文字はCSVファイルで'ıüöğş'のように見えますこのサイトで推奨されている多くの解決策を試しましたが、うまくいきませんでした。
コードスニペットを追加しました。この問題は誰でも解決できますか?
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
を使用すると、CSV
のデフォルトのエンコードはANSI
であり、_UTF-8
_ではありません。したがって、Excel
ではなく_UTF-8
_をエンコードとして使用してANSI
を強制しないと、文字の形式が不正になります。
Excel
は、CSV
( Byte Order Mark )をファイルの最初の文字として置くことで、_UTF-8
_ for BOM
を使用して強制できます。 _UTF-8
_のデフォルトのBOM
は、バイトシーケンス_0xEF,0xBB,0xBF
_です。したがって、文字列の最初のバイトとして_"\xEF\xBB\xBF"
_を置くだけで解決できると考えることができます。しかし、それは確かに単純すぎるでしょうね。 ;-)これの問題は、JavaScriptがそれらのバイトを文字として扱わないようにする方法です。 特殊文字(JavaScript) で説明されているように、「ソリューション」は「ユニバーサルBOM」_"\uFEFF"
_を使用しています。
例:
_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();
_
string/BlobへのUTF-8 BOMの追加 も参照してください。
これを使用すると、エンコーディングが正しくなります。それにもかかわらず、これは、コンマがWindows
ロケール設定のデフォルトのリスト区切り文字である場合にのみ適切に機能します。そうでない場合、たとえばセミコロンがWindows
ロケール設定のデフォルトのリスト区切り文字である場合、すべてのコンテンツはコンマで区切られずに最初の列に配置されます。次に、CSV
でも区切り文字としてセミコロンを使用する必要があります。しかし、これは別の問題であり、CSV
をまったく使用せず、Excel
ファイル(_*.xls
_または_*.xlsx
_)を直接作成できるライブラリを使用するという結論ではないにつながります。