JavaScriptファイルの圧縮を行っていますが、コンプレッサーがファイルに
文字が含まれていると文句を言っています。
これらの文字を検索して削除するにはどうすればよいですか?
JavaScriptファイルの圧縮を行っていますが、コンプレッサーがファイルに
文字が含まれていると文句を言っています。
これらの文字を検索して削除するにはどうすればよいですか?
U+FEFF
はBOMに使用されるUnicodeコードポイントですが、BOM自体がそのコードポイントのエンコード方法です(UTF-8:0xEF 0xBB 0xBF
、UTF-16LE:0xFF 0xFE
、UTF-16BE:0xFE 0xFF
など)。したがって、問題のファイルはUTF-8でエンコードされており、実際のUnicodeコードポイントにデコードするときにコンプレッサーが検出します。
回答:
perl -pi~ -CSD -e 's/^\x{fffe}//' file1.js path/to/file2.js
ファイルに他のutf-8があるとツールが壊れると思いますが、そうでない場合は、この回避策が役立つ可能性があります。(テストされていません...)
編集:-CSD
tchristのコメントに従って、オプションを追加しました。
-CSD
スイッチを使用するか、PERL_UNICODE
変数をに設定して実行する必要がありSD
ます。
perl -CSD -pe 's/^\x{feff}//' file.csv
<fffe>から<feff>への変更に注意してください。
vimを使用して簡単に削除できます。手順は次のとおりです。
1)ターミナルで、vimを使用してファイルを開きます。
vim file_name
2)すべてのBOM文字を削除します。
:set nobomb
3)ファイルを保存します:
:wq
それらの文字を削除する別の方法-Vimを使用:
vim -b fileName
これで、これらの「非表示」文字が表示され(<feff>
)、削除できます。
以前の回答に感謝します。念のため、sed(1)バリアントを次に示します。
sed '1s/^\xEF\xBB\xBF//'
Unix / Linuxの場合:
sed 's/\xEF\xBB\xBF//' < inputfile > outputfile
MacOSXの場合
sed $'s/\xEF\xBB\xBF//' < inputfile > outputfile
Mac用のsedの後の$に注意してください。
Windowsの場合
あるスーパーセッドのsedの拡張バージョンは。Windowsの場合、これはスタンドアロンの.exeであり、コマンドラインから実行することを目的としています。
$'\xEF\xBB\xBF//'
はBashの機能であり、特にMacやOSXの機能ではありません。この構造により、Bashはコマンドラインをに渡す前にエスケープシーケンスを実際のバイトに解析しsed
ます。sed
バリアントによっては、これが機能する場合と機能しない場合があります(ただし、OSXユーザーにとっては、箱から出してすぐに機能するはずだということを知っておくと便利です)。
私はこれにvimgrepを使用しました
:vim "[\uFEFF]" *
また、通常のvim検索コマンド
/[\uFEFF]
'file'コマンドは、BOMが存在するかどうかを示します。
例: 'file myfile.xml'は次のように表示します: "XML 1.0ドキュメント、UTF-8 Unicode(BOM付き)テキスト、非常に長い行、CRLF行末記号付き"
dos2unixはBOMを削除します。
Windowsでは、UnxUtilsのバックポートされた再コード化ユーティリティを使用できます。
Sublime Textでは、蛍光ペンパッケージをインストールしてから、ユーザー設定で正規表現をカスタマイズできます。
ここ\uFEFF
で、highlighter_regex
プロパティの最後に追加しました。
{
"highlighter_enabled": true,
"highlighter_regex": "(\t+ +)|( +\t+)|[\u2026\u2018\u2019\u201c\u201d\u2013\u2014\uFEFF]|[\t ]+$",
"highlighter_scope_name": "invalid",
"highlighter_max_file_size": 1048576,
"highlighter_delay": 3000
}
デフォルトのパッケージ設定を上書きするには、ファイルをここに配置します。
〜/ .config / sublime-text-3 / Packages / User /highlighter.sublime-settings
「dos2unix」ツールの使用をお勧めしますdos2unix ./thefile.js
。テストして実行してください。
必要に応じて、複数のファイルに次のようなものを使用してみてください。
for x in $(find . -type f -exec echo {} +); do dos2unix $x ; done
よろしく。
bomstrip
私のMacでは簡単に利用できませんでした-それであなたに簡単なバージョンを与えるために時間をかけてください:find . -type f -exec dos2unix '{}' +
コード署名なしでファイルを保存します。
<U+FEFF>
。つまり<0xEF,0xBB,0xBF>
、UTF8ファイルのBOMであるため、タイトルを変更する必要があります。それらをどのように削除しますか?魔法の妖精によって?コマンドラインツールで?一つずつ編集することで?Notepad ++は、BOMなしでエンコーディングをUTF8に変更できます。たとえば、「strip BOM utf8」を5秒間グーグルで検索すると、Linuxでこれが見つかりました:ueber.net/who/mjl/projects/bomstrip