テキストファイルの最初4文字の文字化け


テキストファイルをエクセルにインポートする時、最初のセルに「�ｿ」の文字化けがでてきます。

テキストファイルの例文（Mac OSXのTextEditで見た場合）：

[code]

    0dd6b4f419f3489a580846fb4ebe831b|one: [$numVotes$ more votes needed]
    0dd6b4f419f3489a580846fb4ebe831b|other: [$numVotes$ more votes needed]
    89e050644a71fbf8170e280f59fb8940: An error occurred during submission
    a4c510816f6c806507bb528c240ed9a9: [closed]
    2de9c2314772731359c387be3656bc19: Are you sure you want to award your bounty to this answer? THIS CANNOT BE UNDONE!
    
[/code]

複数のテキストファイルで同じ文字が現れてきます。手で治すには時間がかかりますので、自動的に方法がありますか？




おそらく、バイトオーダーマーク(BOM)のついたエンコーディングになっているのだとおもいます。バイトオーダーマークについて詳しくは以下を参照してください。

[バイトオーダーマーク -
Wikipedia](http://ja.wikipedia.org/wiki/%E3%83%90%E3%82%A4%E3%83%88%E3%82%AA%E3%83%BC%E3%83%80%E3%83%BC%E3%83%9E%E3%83%BC%E3%82%AF)

UTF-16エンコーディングだと、プラットフォームによってエンディアンの違いが問題となるため、ファイルの先頭にエンディアンを識別するためのデータが追加されることがあります。そのデータのことをバイトオーダーマーク(BOM)といいます。

UTF-8エンコーディングはエンディアンの問題がないため、通常はBOMが付いていません。Mac OS
Xなどで普通に「UTF-8」といえば「BOMなしUTF-8」となります。ただし、Unicodeの仕様としてはUTF-8にもBOMをつけることが許されていてその場合は「0xEF
0xBB 0xBF」が付加されます。

特に、Windows環境ではUTF-8にもBOMをつける傾向が多いようで、Windowsのメモ帳でUTF-8を選択して保存するとBOM付きUTF-8のファイルになります。

<http://www.php-factory.net/trivia/03.php>

今回の問題はMac版の
ExcelがBOMありのUTF-8に対応していないのが原因だとおもいます。Microsoftの製品なんだから対応して欲しいところですが、仕方ないので
テキストファイルの方を直すしかありません。

UNIXでの文字エンコーディングの変換は通常 iconv を使うのですが、iconvは BOMありのUTF-8に対応していないという問題があります。

<http://yanok.net/2010/02/iconvutf-8bom.html>

ちょっと古いツールですが、昔ながらの nkf を使うとBOMの変更操作も可能です。nkfは homebrew等でインストール可能です。

[code]

    >brew install nkf
    
[/code]

nkfでBOMを削除するには以下のようにします。

[code]

    >nkf --overwrite --oc=UTF-8 test.txt
    
[/code]

逆に、BOMを追加する場合は、以下のようにします。

[code]

    >nkf --overwrite --oc=UTF-8-BOM test.txt
    
[/code]




おそらく、バイトオーダーマーク(BOM)のついたエンコーディングになっているのだとおもいます。バイトオーダーマークについて詳しくは以下を参照してください。

[バイトオーダーマーク -
Wikipedia](http://ja.wikipedia.org/wiki/%E3%83%90%E3%82%A4%E3%83%88%E3%82%AA%E3%83%BC%E3%83%80%E3%83%BC%E3%83%9E%E3%83%BC%E3%82%AF)

UTF-16エンコーディングだと、プラットフォームによってエンディアンの違いが問題となるため、ファイルの先頭にエンディアンを識別するためのデータが追加されることがあります。そのデータのことをバイトオーダーマーク(BOM)といいます。

UTF-8エンコーディングはエンディアンの問題がないため、通常はBOMが付いていません。Mac OS
Xなどで普通に「UTF-8」といえば「BOMなしUTF-8」となります。ただし、Unicodeの仕様としてはUTF-8にもBOMをつけることが許されていてその場合は「0xEF
0xBB 0xBF」が付加されます。

特に、Windows環境ではUTF-8にもBOMをつける傾向が多いようで、Windowsのメモ帳でUTF-8を選択して保存するとBOM付きUTF-8のファイルになります。

<http://www.php-factory.net/trivia/03.php>

今回の問題はMac版の
ExcelがBOMありのUTF-8に対応していないのが原因だとおもいます。Microsoftの製品なんだから対応して欲しいところですが、仕方ないので
テキストファイルの方を直すしかありません。

UNIXでの文字エンコーディングの変換は通常 iconv を使うのですが、iconvは BOMありのUTF-8に対応していないという問題があります。

<http://yanok.net/2010/02/iconvutf-8bom.html>

ちょっと古いツールですが、昔ながらの nkf を使うとBOMの変更操作も可能です。nkfは homebrew等でインストール可能です。

[code]

    >brew install nkf
    
[/code]

nkfでBOMを削除するには以下のようにします。

[code]

    >nkf --overwrite --oc=UTF-8 test.txt
    
[/code]

逆に、BOMを追加する場合は、以下のようにします。

[code]

    >nkf --overwrite --oc=UTF-8-BOM test.txt
    
[/code]

