こんにちは。
UTF-8 テキストファイルを BOM 付へ変換しました。シェルスクリプト(および他方法)を用いました。なお、CSV ファイルを例としています。
シェルスクリプト
実行例1、および入出力ファイル確認は、
$ ./bom.sh a_utf8.csv > a_utf8_bom.csv
$
$ file a_utf8.csv a_utf8_bom.csv
a_utf8.csv: UTF-8 Unicode text
a_utf8_bom.csv: UTF-8 Unicode (with BOM) text
ソース
bom.sh
#!/bin/sh
printf '\357\273\277'
cat "$@"
nkf コマンド利用
nkf コマンドを利用する方法は2、
$ nkf --oc=UTF-8-BOM a_utf8.csv > a_utf8_bom.csv
$ nkf --guess a_utf8.csv a_utf8_bom.csv
a_utf8.csv: UTF-8 (LF)
a_utf8_bom.csv: UTF-8 (BOM) (LF)
PowerShell 利用
PowerShell 利用の場合は3、
PS> get-content -encoding:utf8 a_utf8.csv | out-file -encoding:utf8 a_utf8_bom.csv
PS> nkf --guess a_utf8.csv a_utf8_bom.csv
a_utf8.csv: UTF-8 (LF)
a_utf8_bom.csv: UTF-8 (BOM) (CRLF)
Microsoft 製品における UTF-8(BOM無)のサポート状況(参考情報)
なお、Microsoft 製品において、UTF-8(BOM無)テキストファイルのサポート状況は:
- Excelは、UTF-8(BOM無)の CSV ファイル読み込みには未対応(2024年現在)4
- Windows OS のテキストファイルの内容(全文)検索は、UTF-8(BOM無)には未対応(2023年現在)
- Visual Studio は対応済み(2017年以降)
- Notepad(メモ帳)は対応済み(2018年以降)
- PowerShell スクリプト(ps1)は不明5
-
参考:「bashでもUTF-8 with BOMなファイルを作りたい」、「UTF-8 な CSV を Excel が読めるように先頭 BOM をつけるシェルスクリプト」。 ↩
-
したがって Excel が抱えている問題として、読み込みには、BOM 付き UTF-8 の CSV ファイルが必要となります。他の対処法としては、CSV ファイル中での非 ASCII 文字の利用を止めるか、または文字コードを Shift JIS へ変換する対処法もあります。 ↩