稲沢市よりお届けしてます。

Perlをはじめとしたプログラミング周りのあれこれについて。Perl、最近書いてないなぁ。

できたー!!WWW-Mechanize文字化け対応(浅い方の解決策)

以前、ハマっていたWWW::Mechanizeの文字化け


半月以上の月日を経て、やっと解決しました。
(とりあえず簡単な方で)


このURLが同じ問題かと思われます。

と、

親切なk-z-hさんから、的確なアドヴァイスをいただいていたんですが、
当時の私は、オブジェクトの「お」の字も知らず、ソースコードを眺めて萎えてしまっていました。


しかーし!

「このままでは終わらせじ!板垣死すとも自由は死せず!(意味不明)」


という思いで
「すぐわかる オブジェクト指向 Perl」や「続・初めてのPerl 改訂版」を読み漁り、久しぶりに試してみたのですよ。


したら、できたのです。
こっちのやり方ですが↓

WWW::MechanizeでShift-JISとかのフォームを送信する方法

HTML::Formモジュールの

$form->accept_charset( $new_accept )
This method gets/sets the list of charset encodings that the server processing the form accepts. Current implementation supports only one-element lists. Default value is "UNKNOWN" which we interpret as a request to use document charset as specified by the 'charset' parameter of the parse() method. To encode character strings you should have modern perl with Encode module. On older perls the setting of this attribute has no effect.

ココがポイントでした。


気分がイイので日本語訳
※日本誤訳なので、気付い点がございましたら、ご指摘くださいm( _ _)m

$form->accept_charset( $new_accept )
「このメソッドはサーバープロセスの中でフォームが受け入れる文字コードを取得/セットします。今のバージョンではこのメソッドを実行すると文字コードを一つだけ扱うことができます。デフォルトの値は"UNKNOWN"です。文書の文字コードを扱うリクエスト(parseメソッドの'charset'パラメーターによって特定できるような)として理解している"UNKNOWN"です。エンコーディングするためには、Encodeモジュールとモダンパール(Encodeモジュールがコアモジュールになったver5.8以降かな?)が必要です。古いパールを使ってもこのメソッドは効果を発揮しません。」



今回の壁をきっかけに、
「モジュールのドキュメントを読み、調べる」
という習慣がつきつつあるのが何よりの収穫!!


わーい!Perl力アップだぁぁぁぁ!!