Saturday 6 July 2013

そういえば platex でも文字化けしたりするんだ

友人から相談をうけた事象をきっかけに,そういえばそうなんだなあ,という話.

platex とかで encoding を読み間違えると,普通にコンパイル通ってしれっと文字化けすることがある

例えば, hoge.tex
\documentclass{jsarticle}
\begin{document}
日本語通るかな?

Hello, World!
\end{document}

というのを考えてみる.utf-8 で書いて utf-8 で読んでもらうと当然普通に通る.

一方これを,
$ platex --kanji=Shift_JIS hoge.tex
$ dvipdfmx hoge.dvi
とすると,たとえばここでは
** WARNING ** No character mapping available.
 CMap name: H
 input str: <7c>

** WARNING ** No character mapping available.
 CMap name: H
 input str: <7e>
]
と Warning が出るもののコンパイルは通って,

となる.もちろんというかなんと言うか,文字によっては Warning 無しで通ってしまうこともあって,たとえば foo.tex
\documentclass{jsarticle}
\begin{document}
あ
\end{document}

$ platex --kanji=Shift_JIS foo.tex
$ dvipdfmx foo.dvi
特に Warning とかもなく一見普通にコンパイルされて


今回のは utf-8 のを shift_jis として読むというやや特殊な(?)状況.
エディタが utf-8 で扱ってたのを Windows 環境の platex でそのままコンパイル,という話だったのだが,
逆に shift_jis のファイルを utf-8 のつもりで読むとめったにうまく行かないっぽい.
もっと露骨に問題が発生する感じ.
なんとなく encoding ミスると大抵の場合はそうなるイメージだった. 

No comments:

Post a Comment