プロが教える店舗&オフィスのセキュリティ対策術

http://sourceforge.jp/projects/nkf/
でダウンロードしたものをcygwinでmakeしたものを使っています。

nkf -w8 -W16L -x hoge.txt > moge.txt
nkf -w16L -W8 -x moge.txt > hoge2.txt
とすると、全角ハイフンが半角になってしまいます。

UTF-16LE→UTF-8→UTF-16LEで可逆変換できるようなオプションはどのように指定すれば良いですか?

またはそれが可能な別のコマンドラインツールはありますか? (Windowsまたはcygwinで動作可能な)

UTF-16で出力されるWindows RegistoryファイルをsvnにUTF-8で保存してバックアップしたいです。

UTF-16はsvnにバイナリ扱されるし、圧縮されるとはいえほとんどがASCIIのレジストリファイルでは無駄が多いので、UTF-8で保存しようと思いました。

具体的には以下のようなバッチファイルを起動時や定期的に実行します。

regedit.exe /e hoge.reg HKEY_CURRENT_USER\hoge
nkf -w8 -W16L -x hoge.reg > hoge.txt
svn.exe add hoge.txt
svn.exe ci -m "" hoge.txt
(パスは省略してあります)

Windowsでの運用なのですが、nkfなのでLinuxのカテゴリに投稿させていただきました。

A 回答 (3件)

「--no-best-fit-chars」オプションを使う、


または nkf の代わりに iconv を使う、
あたりで解決する「かも」しれません。

参考URL:http://ja.wikipedia.org/wiki/Iconv
    • good
    • 0
この回答へのお礼

iconvで可逆変換できました。
ありがとうございました。

お礼日時:2010/12/15 23:14

nkf の --ms-ucs-map でどうでしょうか?



あと、cygwinに閉じて作業しないのであれば、cygwinツールより Gnu-win32ツールの方がいいと思います。
http://gnuwin32.sourceforge.net/packages.html
    • good
    • 0

未検証ですみませんが



subversionを使うなら、属性 svn:mime-type を text/plain;charset=UTF-16LE にしたらいいかもしれない。
ついでにsvn:eol-style を nativeかCRLFにしておく。

この回答への補足

svn:mime-type を text/plain;charset=UTF-16LE にしてみました。
結果、db内のファイルサイズの差が全くなかったのですが、「ファイル '~~.reg' は改行文字が一貫していません」となって、svn:eol-style を nativeかCRLF に設定出来なかったからでしょうか(TortoiseSVN)。

また、UTF-16の20MBのレジストリファイルを1つ追加した状態でリポジトリの容量が1.9MB、
UTF-8にすると10MBでその場合のリポジトリは1.6MBだったんで、やはりky072さんの方法でUTF-8にして運用していこうと思います。

ありがとうございました。

補足日時:2010/12/15 23:28
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!