‘2013/10’ カテゴリーのアーカイブ

epubcheckの日本語文字化け対策

2013/10/28

 以前、このブログで発表して現在配布中の「EPUB3トータルデータチェッカー」なのですが、どうも日本語のパス名が化けて表示されるようで少々気になっていました。エラーメッセージ自体は英語ですのでそこまでの問題ではないのですが、JEPAがepubcheckの日本語化バージョンを発表したなどというニュースもありましたし、これが標準になってくるとエラーメッセージそのものが文字化けして読めないというような事態になってきます。これでは少々寝覚めが悪いのも確かですのでちょっと調べてみました。

.bash_profileを書き換えてみたけれど・・・

 「java mac 文字化け」などで検索すると、事例がそれこそ星の数ほど引っかかるのですが、要はjavaの内部処理コードのデフォルトがShift_JISなため、そのままでUTF-8環境に書き出すと日本語部分が文字化けしてしまうということのようです。「ターミナルの文字コードをShift_JISに設定すれば化けない」なんて情報もあったのですが、そこは諸般の事情で変えたくないので却下です。で、このあたりこのあたりの情報をもとにまずは.bash_profileに設定を追記してみました。

 まずはターミナルを立ち上げて以下のコマンドを入力し、.bash_profileを編集できるようにします。

cd ~
vi .bash_profile

viが立ち上がったら、iキーを入力して挿入モードにし、以下のコマンドを入力します。

alias javac=’javac -J-Dfile.encoding=UTF-8′
alias java=’java -Dfile.encoding=UTF-8′

.bash_profileを編集 コマンドを入力し終えたらESCキーを押して「:wq」を入力してファイルを閉じます。viとか普段使わないのでこことかでコマンド調べながらの作業です。

 これでターミナルを再起動し、

-java -jar epubcheckのパス epubファイルのパス

 などと打ち込めば、例えパスに日本語が含まれていても正しくチェック結果が表示されるはずです。

ターミナル出力結果が文字化けせずに表示された 実際試してみると、確かに正しく表示されました。

 ただ、この方法だと(まあbashの設定を変えただけなので当たり前なんですが)ログ出力したテキストファイルにまでは効力が及ばないようで、相変わらずログテキスト内では文字が化けてしまっています。

「export _JAVA_OPTIONS=-Dfile.encoding=UTF-8;」を追記して文字化け解消

ログファイルが文字化けせずに出力された そこで、ここの情報をもとに、「-java -jar epubcheckのパス epubファイルのパス」の前に「export _JAVA_OPTIONS=-Dfile.encoding=UTF-8;」を追記してみました。
 つまりjavaを実行する前に出力文字コードをUTF-8にするオプションを連続実行するようにしてみたわけです。

 はい、ちゃんと日本語になってくれました。

改訂済の「EPUB3トータルデータチェッカー 1.2.1」こちらからダウンロードしていただけます。

 なお、今回はJEPAの日本語化バージョンの元バージョンが「3.0」(英語最新版は3.0.1)であることから、内包するepubcheckのパッケージを差し替えることは見送りました。従いまして、エラーメッセージ自体は従来通り欧文で表示されます。将来的に日本語化バージョンがバージョンアップした場合には、適宜差し替えを考えております。

 epubcheckのエラーメッセージの内容につきましてはここが参考になります。
 なお、こちらのTIPSやアプリケーションを利用された結果生じた損害につきまして私は一切の責任は負いかねますので、あくまで自己責任にてご利用ください。

(2013.10.29)

プロフィール
Jun Tajima

こちらにて、電子書籍&Web制作を担当しています。
このブログは、EPUB3をはじめとした電子書籍制作担当オペレータからの、「電子書籍の制作時にたとえばこんな問題が出てきていますよ」的な「現地レポート」です。少しでも早い段階で快適な電子書籍閲覧・制作環境が整うことを願って、現場からの声を発信していこうと目論んでおります。

当ブログ内の記事・資料は、私の所属しております組織の許諾を得て掲載していますが、内容は私個人の見解に基づくものであり、所属する組織の見解を代表するものではありません。また、本ブログの情報・ツールを利用したことにより、直接的あるいは間接的に損害や債務が発生した場合でも、私および私の所属する組織は一切の責任を負いかねます。