Perlexの文字コードが変な件について
前にも何度か紹介したが,lexiconのperlexは屈折辞の展開がされた後は文字化けがおきている.
前の記事では,後でpythonスクリプトで修正する方法をとっていたが,特にqとŕで無理があるやり方だった.しかも,その後でまた変な文字化けを見つけたし...(要はキリがない.と言いたい)
そこで,根本から直すべく,MakeファイルとPerlのスクリプトを洗ってみることにした.
まずはmakeを実行する時に,
make -n
で変数が展開された状態でmakeファイルをチェックする.
そして,文字化けが発生した過程を少しづつチェックしていく.
すると,*.fファイルが生成された後に,*.lexファイルを生成される直前に
iconv -f UTF-8 -t $(LEX_ENCODING)
という記述が764行目に発見された.
これは,つまりutf-8を他の文字コードに書き換えるということ.LEX_ENCODINGの中身を調べてみると...latin-2に書き換えられていることが判明した.
なので,この行は削除.
さらにその直前にはPRERECODINGっていう記述があり,この変数が指している内容は
PRERECODING = | perl -pe "s/ā/â/g; s/ħ/ł/g; s/ẓ/ż/g; s/⎖/˛/g; s/ġ/¤/g;"
である.
まったくもって無用な長物なので,これも削除.
これで文字化けのないlexファイルの生成が可能になる.
なお,このデバッグ(?)にあたっては研究室の友人に手伝ってもらった.本当に頭があがらない.