XML::Parser を Hack して utf8 フラグ問題から解放される

意外と知られてないのかもしれないので書いてみる。というか竹迫さんのパワポに書いてるまんまなんだけど、XML::Parser のソースに以下のパッチを当てるのみ。

--- XML-Parser-2.34-orig/Expat/Expat.xs Mon Jul 28 23:41:10 2003
+++ XML-Parser-2.34/Expat/Expat.xs      Fri Aug 27 08:36:39 2004
@@ -17,6 +17,8 @@

 #undef convert

+#undef SvUTF8_on
+
 #include "patchlevel.h"
 #include "encoding.h"

するとあら不思議、XML::Parser で utf8 フラグが立たなくなります。ということは XML::RSS でもまた然り(XML::RSS の中では XML::Parser で parse してる)です。

かなり ad hoc ではあるけど、アプリケーションのコードの中でマジカルなことをやらなくていい分、精神衛生上はよろしいかと。XML::Parser が update されたときに注意すべし...と。

ちゃんとやりたい方は、

あたりを使いましょう。