4
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

UTF-8 テキストファイルを BOM 付へ変換(シェルスクリプト)

Last updated at Posted at 2019-12-04

こんにちは。
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
  1. 参考:「bashでもUTF-8 with BOMなファイルを作りたい」、「UTF-8 な CSV を Excel が読めるように先頭 BOM をつけるシェルスクリプト」。

  2. 参考:【メモ】コマンドでのBOMの追加・削除・確認

  3. 参考:Powershellでファイルの文字コードを変換

  4. したがって Excel が抱えている問題として、読み込みには、BOM 付き UTF-8 の CSV ファイルが必要となります。他の対処法としては、CSV ファイル中での非 ASCII 文字の利用を止めるか、または文字コードを Shift JIS へ変換する対処法もあります。

  5. 参考:「SJISと決別し、デフォルトでBOMなしUTF-8を扱えるようにするPowerShell設定

4
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?