ファイルを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つの既知の「バグ」/制限ですか?