WindowsでファイルのBOMを付けたり消したりする

友達に訊かれたので記録。

他所の会社から毎日送られてくるCSVファイルに突然がつかなくなったけど、自分の部署のツールはBOMがついているCSVしか読めないツールを使っていて、自動での連携が動かなくなったんだそうです。まあツールってのはExcelなんですが、BOMがついてないCSVだとファイルがUTF-8だと自動認識してくれない作りなんだと。

相手に「BOMつけて送ってよ」って言えば、と答えたんだけど、会社をまたぐことなので難しいし時間が掛かりそうということ。OSはWindows。

対処法としては、「コマンドラインでUTF-8テキストのBOMを追加したり削除したりする」に書いてあることを実施しているだけですが。

ICUのページから、検索ボックスで”Windows download”で検索し、ツールのダウンロードページを探す。ICU(バージョン)のバージョン番号の大きなものを開く、番号が大きくても(Release Candidate = リリース候補)とかは安定してるかわからないので避ける。

Binary Downloadで、Windowsのバイナリが二つある。自分のWindowsが64bitなら64bit版を、32bitか不明なら32bit版をダウンロードして展開する。

icu\bin\uconv.comと、同じ場所にあるicu*.dll (icuで始まる拡張子が.dllのファイル全部)を、変換作業を行なうディレクトリにコピー。(または、PATHが通った場所にコピー)

コマンドプロンプトで試す。BOMのついたcsvが received.csv だとしたら、

> uconv -f utf-8 -t utf-8 –add-signature received.csv > received.bom.csv

を実行すると、BOMがついたCSVができるので、これで開けるようになります。

あとは、このコマンドを、毎日のファイル受信直後に実行するようにタスクスケジューラーを指定するとかで対処できるのでは、と回答しました。

Windows版MongoDBの設定ファイル指定と、Web UI無効化

mongodはデフォルトで、port 28017 にアクセスすることでブラウザから動作をモニターできる、というのをSymfony2勉強会で教えてもらいました。

このHTTPインタフェースは、/etc/mongodb.conf に

nohttpinterface = true

のように設定することで止められます。(設定できる項目についてはここ)

しかし、Windowsの場合は? mongodb.conf をmongod.exe と同じ場所においてみましたが、別に読み込んでくれません。


> mongod --config mongodb.conf

と明にファイルを指定することはできましたが、デフォルトのconfファイルの場所というのがあるかはわかりませんでした。

また、このWeb UIからRESTで格納されたデータを参照するためには、


> mongod --rest

のオプションをつけて起動する必要がありました。(デフォルトでオフ)

Windows+cygwin+sshで”Could not create directory”が出るとき

エラーメッセージでは

Could not create directory ‘/home/(ユーザ名)/.ssh’.

とか出ますが、cygwinが認識するあなたのホームディレクトリはC:ドライブのルートとかではなくてcygwinのインストールディレクトリなので、たとえば、

C:/cygwin/home/akky/.ssh/

というディレクトリを作れば、そこにsshの設定を書き込んでくれます。

‘.ssh’というドットで始まるディレクトリの作り方は、.htaccessとかのファイルの時と同様ですが、GUIでは作れない(エラーになる。ムキー)ので、”ssh”とでもして作っておいて、コマンドプロンプトでその”ssh”があるディレクトリへ移動して、

> ren ssh .ssh

でその名前にできます。

cygwinの設定ファイルを変更してまったく別のディレクトリを使う手もあると思います。あくまで一例。

symfonyのsync(1.0の場合)、project:deploy(1.2の場合)がsshを呼び出す場合に上のエラーが気になる場合の対処でした。

Windows+Apache2.2+mod_rewriteでURLにコロンを含められない

Internal Server Errorで、ログには”The given path misformatted or contained invalid characters:”と出ます。

Windowsのファイルシステムがコロンを使う(C:とか)ことと関連するApacheのバグだそうで、今のところ解決していない模様。

http://b.hatena.ne.jp/entry/http://akimoto.jp/blog/

みたいなURLのパラメータ受け取りをやろうとして.htaccessをいじっていたのですが、ローカルのWindowsでなんかエラーになるので検索したらそういうことだと。