UTF-8エンコーディングでCSVファイルを作成しています。
Notepad ++を使用して開くと、漢字が正しく表示されます。
メモ帳で開くと漢字が正しく表示されます。
しかし、Excelを使用して開くと、ガベージ値が表示されます。
メモ帳を使用して開き、Control + Sを押してファイルを閉じ、Excelで再度開くと、文字が完全に表示されます。
ここで何が起こっているのか手がかりはありますか?
また、エンコーディングGB2312を含む通常のCSVファイルを作成しようとしました。次に、Unixコマンドiconvを使用して、ファイルを「GB2312」から「UTF-8」に変換しました。
このコマンドはすべての漢字を削除し、英語の文字のみを表示します。したがって、これは解決策ではありません。
提案してください。
編集-
ガベージ値は表示されませんが、ANSIエンコーディングは表示されます。デフォルトでANSIエンコーディングを選択するのはなぜですか。また、同じファイルをNotepad/Notepad ++で開いた後、UTF-8で開くのはなぜですか。
また、Control + sだけでExcelで正しく開くことができるのはなぜですか。
Linuxでは、UTF8 BOMはオプションであるため、UTF8は通常 [〜#〜] bom [〜#〜] なしで保存されます。したがって、アプリで適切なエンコードを検出できない場合があります。それらをBOMを使用してUTF8に保存するか、代わりにUTF16を使用してみてください。
UTF-8エンコーディングを使用したBOMシーケンスを認識していましたが、ファイルに追加する方法を認識していませんでした。
現在、BOMシーケンスは0xEF、0xBB、0xBFであるため、これをプレーンテキストとして追加しようとしましたが、機能しませんでした。そこで、これらのASCII値をCSVに追加すると、機能します。
ASCII値は=
new.text = chr $(239)&chr $(187)&chr $(191)|連結
これを1行目に追加するだけで、機能します。
あなたの提案をクリスに感謝します。