xmllintのxpathを使うと文字エンコードがバグる件

Pocket
LINEで送る
GREE にシェア
LinkedIn にシェア

こんにちわ。
 

文字エンコードと掛けまして、
 

自家用車と、ときます。
 

そのココロは・・・
 

シフト(shift-jis)はもう古い。
 

ナンチャッテ・エンジニアの下駄です。
 

先日、xmllintが便利だというブログを書いたんですが、使っていてどう考えてもバグを発見したので、お伝えします。
 

xmllint学習 #1 サーバーコマンドでxmlをパースできるxmllintが便利っぽい
 

事象

xmllintは、–encodeオプションで、文字エンコードを指定することができるんですが、
–xpathオプションを使うと、encodeが機能しないという事が判明しました。
 

サンプルとして、以下のxmlを読み込んでみました。
 

 

 

この中のitemタグを絞り込もうとxpathを使うと・・・
 

 

 

文字コード化したデータをブラウザで表示すると、ブラウザのオートエスケープ機能が働いて、正常に見えるんですが、コマンドを叩いたら、上記のようになるので、非常に困惑します。
 

解決への道

ひとまず、nkfコマンドで、文字エンコード状態を調べてみましょう。
 

見事に、UTF-8からASCIIに切り替わっていることが分かります。
 

でも、
 

 

無事に変換できたかと思っても、コード表示は変わっていません。
ファイルのエンコードが変わっただけのようです。
 

コマンド操作だけでは、これが限界なのか?
この先は、phpなどで変換したほうがいいかもですね。

Leave a Reply

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です