ExcelでCSV形式でファイルを保存すると、常にBOMが削除されます


15

ファイルをCSVタイプに保存するときにExcelがデフォルトでBOMを削除する理由を見つけるために、妥当な解決策/説明を(失敗して)見つけようとしました。

この質問と重複している場合はご容赦ください。これは、非ASCIIエンコードでCSVファイルの読み取りを処理しますが、ファイルの保存を取り消すことはできません(最大の問題が存在する場所です)。

これが私の現在の状況です(Unicode文字とCSV形式を処理するローカライズされたソフトウェアでよくあることです)。

  • UTF-16LEを使用してデータをCSV形式にエクスポートし、BOMが設定されていることを確認します(0xFFFE)。Hexエディターでファイルが生成された後、ファイルが正しく設定されていることを確認します。

  • ファイルをExcelで開き(この例では日本語の文字をエクスポートしています)、Excelが正しいエンコードでファイルの読み込みを処理することを確認します。

  • このファイルを保存しようとすると、ファイルにUnicodeエンコードと互換性のない機能が含まれている可能性があることを示す警告メッセージが表示されますが、保存するかどうかを尋ねられます。

  • [名前を付けて保存]ダイアログを選択すると、CSVではなく「Unicodeテキスト」としてファイルを保存するようすぐに求められます。「CSV」拡張子を選択してファイルを保存すると、BOMが削除されます(明らかにすべての日本語文字とともに)。

なぜこれが起こるのですか?この問題の解決策はありますか、またはこれはExcelの既知の「バグ」/制限ですか?

さらに、(副次的な問題として)UTF-16LEでエンコードされたCSVファイルを読み込むとき、ExcelはTAB区切り文字のみを使用するようです。繰り返しますが、これはExcelのもう1つの既知の「バグ」/制限ですか?

回答:


6

「ExcelがXを実行する理由」という形式の質問に対する丁寧な回答はありません。

標準の転送形式として「Unicodeテキストとして保存」を採用しないのはなぜですか?Excel Save asは、BOMがあることを確認し、TABを区切り文字として使用し、CSVと同様にフィールドを引用します...

ところで、「CSV拡張機能を選択する」ことはありません。フォーマットと拡張子の2つの選択肢があります。[ファイルの種類]ボックスでUnicodeテキストとして保存し、[ファイル名]ボックスの拡張子を手動でcsvに変更してください。次に、Excelを終了し、Windowsエクスプローラーでファイル名をダブルクリックします。うまく開きます。それを試してみてください。

OPのコメントを議論するための更新

  • (Unicodeテキストとして保存)(Excel 2007)は、常にファイルをテキスト拡張子として保存します(以前のバージョンまたは新しいバージョンについて話すことはできません)。それが「タイプとして保存」のアイデアです...

=>上記で書いた内容を注意深く読んで、自分で試してみてください。上書きしない限り、常にTXT拡張子を付けてファイルを保存します。txt「ファイル名」ボックスのを削除して、を入力しcsvます。

  • 「BOMがあることを確認するためのExcelの保存」を明確にすることは誤りです。

=>「Unicodeテキストとして保存」は、ファイルの先頭にUTF-16LE BOMがあることを確認します。試してみてください。

  • これが私が最初に質問した理由です!ファイルエンコーディングがUFT-16LEであることを示すBOMを含むCSV形式のファイルを開き、Excelでこのファイルを変更すると、このファイルを保存するときにエンコーディングがそのまま残っていることが予想されます...

=> Excelは入力CSVファイルに関する情報を保持しないため、期待は満たされません。やりたいことを強制する方法はありません。だからあなたはあきらめるか、私が提案しているような何か他のものを試してみてください。

  • 本当に素晴らしいと思うのは、これらの問題を以前に経験したことがある人です。

=>数年前に中国のデータとExcel 1997でこれらの問題を経験しました。質問に答える前に、Excel 2003およびExcel 2007で、Excelの動作がまだ悪いことを確認しました。「タイプとして保存= Unicodeテキスト、拡張子= CSV」という回避策が実際に機能することを確認しました。私は洞察を提供しました。


1
(Unicodeテキストとして保存)(Excel 2007)は、常にファイルをテキスト拡張子として保存します(以前のバージョンまたは新しいバージョンについて話すことはできません)。それは「タイプとして保存」という考え方です...「BOMがあることを確認して名前を付けてExcelに保存」を明確にすることは正しくありません。これが私が最初に質問した理由です!ファイルエンコーディングがUFT-16LEであることを示すBOMを含むCSV形式のファイルを開き、このファイルをExcelで変更すると、このファイルを保存するときにエンコーディングがそのまま残っていることが予想されます。これらの問題を以前に経験したことがある方は、ご意見をお聞かせください。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.