web-dev-qa-db-ja.com

UTF-8ファイルがExcelで漢字を表示しない

UTF-8エンコーディングでCSVファイルを作成しています。

Notepad ++を使用して開くと、漢字が正しく表示されます。

メモ帳で開くと漢字が正しく表示されます。

しかし、Excelを使用して開くと、ガベージ値が表示されます。

メモ帳を使用して開き、Control + Sを押してファイルを閉じ、Excelで再度開くと、文字が完全に表示されます。

ここで何が起こっているのか手がかりはありますか?

また、エンコーディングGB2312を含む通常のCSVファイルを作成しようとしました。次に、Unixコマンドiconvを使用して、ファイルを「GB2312」から「UTF-8」に変換しました。

このコマンドはすべての漢字を削除し、英語の文字のみを表示します。したがって、これは解決策ではありません。

提案してください。

編集-

ガベージ値は表示されませんが、ANSIエンコーディングは表示されます。デフォルトでANSIエンコーディングを選択するのはなぜですか。また、同じファイルをNotepad/Notepad ++で開いた後、UTF-8で開くの​​はなぜですか。

また、Control + sだけでExcelで正しく開くことができるのはなぜですか。

2
Techidiot

Linuxでは、UTF8 BOMはオプションであるため、UTF8は通常 [〜#〜] bom [〜#〜] なしで保存されます。したがって、アプリで適切なエンコードを検出できない場合があります。それらをBOMを使用してUTF8に保存するか、代わりにUTF16を使用してみてください。

3
Chris.C

UTF-8エンコーディングを使用したBOMシーケンスを認識していましたが、ファイルに追加する方法を認識していませんでした。

現在、BOMシーケンスは0xEF、0xBB、0xBFであるため、これをプレーンテキストとして追加しようとしましたが、機能しませんでした。そこで、これらのASCII値をCSVに追加すると、機能します。

ASCII値は=

new.text = chr $(239)&chr $(187)&chr $(191)|連結

これを1行目に追加するだけで、機能します。

あなたの提案をクリスに感謝します。

0
Techidiot