Umichang / nijisanji-ime-dic

Microsoft IMEなどで利用することを想定した「にじさんじ」関連用語の用語辞書です。
MIT License
28 stars 5 forks source link

ATOK版の登録がうまくいかないことがある #9

Closed Umichang closed 4 months ago

Umichang commented 4 months ago

問題

UTF-8版のユーザー辞書テキストを登録できないバージョンのATOK辞書ユーティリティが存在する…?(macOS版最新であれば当然対応しているため、古いWindows版か)

確認事項

ワークアラウンド

Umichang commented 4 months ago

リリース版をmakeした環境でのiconvの対応文字コード一覧

https://app.warp.dev/block/sn0JzybvTEv19lYrZyaQtK

TamaZooo commented 4 months ago

当方の環境 windows 11 Pro 23H2 22631.3672 ATOK Passport版最新ATOKを利用。 image image

ダウンロードしたそのままのデータをインポートした結果 main.atok_utf-8.txt main.atok_utf-8.txt.log

ダウンロードしたデータをShift-JISに変更してインポートした結果 main.atok.txt main.atok.txt.log ※「う゛」について変換時に破損するため「れう゛ぃ」と「う゛ぃんせんと」につては別途修正した

TamaZooo commented 4 months ago

~参考情報~

ファイル作成時に文字コード指定が無いので、OSのデフォルト文字コードが採用されている可能性あり。 https://atok.com/other/support/howtouse/mac/dc/pgs/dc_word_file.htm

辞書から抽出した場合Unicode出力を指定しなければ、Shift-JISで出力される。 main.atok.export.txt

一括登録時に、文字コードを指定するオプションは無し。(出力時はある) image

Umichang commented 4 months ago

対処方針としてはゔをう゛と変換した上でiconvではcp932に変換するのが丸そう? sed 's/ゔ/う゛/' (後ろにgオプションをつけないのは登録語彙の汚染を防ぐため) ただ、上記だとsedに依存するのでrubyのワンライナーの方が良い。老人なのでsedで片付けたがる

つまりMakefileの23〜24行目を

.txt.atok.txt:
    userdic-ng msime atok < $< | sed 's/ゔ/う゛/' | iconv -f UTF-16LE -t CP932 | ruby -pe 'sub("\n", "\r\n")' > $@

とすればいけそう。あとで試す。

TamaZooo commented 4 months ago

文字コード変換方法をEmEditorで開いてエンコード保存(Shift-JIS)とした場合に「う゛」が破損した模様。

Powershellで以下を実施した場合は「う゛」は「ヴ」に変換された Get-Content -Encoding utf8 ".\main.atok_utf-8.txt" | Out-File -Encoding shift-jis ".\main.atok_shift-jis.txt" main.atok_shift-jis.txt

Get-Content -Encoding utf8 ".\main.atok_utf-8.txt" | Out-File -Encoding ansi ".\main.atok_ansi.txt" main.atok_ansi.txt

ATOK(Windows版)で辞書登録する際に「ヴ」で登録すると自動的に「う゛」に変換された。 image

Umichang commented 4 months ago

https://app.warp.dev/block/aXtUK6tvDbe21unzJBklr2 iconvがwarningを吐いてるけど実際にドロップしている行はなさそう(目視でvta.txtのみを確認) ほんとに大丈夫?