日本語入力のユーザー辞書について、 下にあげた一般的な日本語入力エンジンで 共通にインポート可能なフォーマットがあります。 なお品詞は名詞に限るとします。
辞書をエクスポートするとヘッダが付加されたりしますが、 本体のフォーマットはどのIMEでもだいたい同じです。
    <ひらがな> <タブ> <変換文字列> <タブ> <品詞> <タブ> <コメント> <改行>したがってエンコードだけの問題なのですが、 MS-IMEが一番制限がきつくてMS-IMEが読み込める utf-16 & little-endian & BOM付き (以下utf-16leb) にすればどの日本語入力エンジンからでもインポートできるようになります。 要するにWindows様に合わせろということです。
まったくutf-16はウンコです。 本当は滅んでほしいのですが…
テキストエディットで保存時にエンコーディングとして "Unicode (UTF-16)" を選べば、utf-16lebで書き出せます。 ただし新規作成した場合でないと選べないので、 別に開いたウインドからコピペする必要があります。
メモ帳でエンコーディングとして "Unicode"を選べば、 utf-16lebで書き出されます。
iconvでは直接この形式に変換できないみたいで、 以下のようなことをしないとダメっぽいです。
    # printf "\377\376" > bom-le.txt
    # cat utf8.txt | iconv -f utf-8 -t utf-16le > utf16le.txt
    # cat bom-le.txt utf16le.txt > utf16leb.txtPerlスクリプトを書いたのでおいておきます。 ご自由にお使いください。
中身はこんな感じです。
    #!/usr/bin/perl
    # utf-8のファイルを utf-16 little-endian BOM付きに変換する。
    # iconvで -t utf-16le とやるとBOM無しのファイルができるので、
    # 先頭に \xFF\xFEを追加しても良いが。
    # cat utf8.txt | utf8-to-utf16leb.pl > utf16leb.txt
    use strict;
    use Encode;
    # 読み込む
    my $text = '';
    while( defined(my $line = <>)){
     $text .= $line;
    }
    # CRLFにしてしまえ!
    $text =~ s/\r\n/\n/g;
    $text =~ s/(\n|\r)/\r\n/g;
    # Little Endian UTF-16 に。
    Encode::from_to($text,"utf-8","utf-16le");
    # BOMを書き出す。
    print "\xFF\xFE";
    # 本文を書き出す。
    print $text;
    # おしまい