JMeterの文字化けポイント

なんで文字化けすんのかしらべてみたら,なんのことはない.JMeterってURLエンコードやデコードを"UTF-8"でやってるからなのね.そして犯人は,このヒトたち.

::URLエンコードしてるヒトたち::
HTTPArgument.getEncodedName()  (org.apache.jmeter.protocol.http.util)
HTTPArgument.getEncodedValue()  (org.apache.jmeter.protocol.http.util)
  EncoderCache.getEncoded(String)  (org.apache.jmeter.protocol.http.util)
    JOrphanUtils.encode(String, String)  (org.apache.jorphan.util)


::URLデコードしてるヒトたち::
HtmlParsingUtils.isAnchorMatched(HTTPSamplerBase, HTTPSamplerBase)  (org.apache.jmeter.protocol.http.parser)
HTTPArgument.HTTPArgument(String, String, boolean)  (2 usages)  (org.apache.jmeter.protocol.http.util)
  JOrphanUtils.decode(String, String)  (org.apache.jorphan.util)

JOrphanUtilsを呼んでるところで,しっかり"UTF-8"ってハードコードしてあった.:-D
#JDK1.4.x使うと標準APIのURLEncoderやURLDecoderを使うらしい.


んじゃ,この部分を"Shift_JIS"とか"Windows-31J"にすれば,やっつけパッチの出来上がりか?と思ってやってみたら,半分アタリで半分ハズレだった.
確かに日本語になるんだけど,一部びみょ〜に文字化けしてるところがある...


試しにWebブラウザがURLエンコードした文字列を,URLEncoder.encode(str, "SJIS")でエンコードしてみたら,こうなった.

元の文字列:対象データが見つかりません。
Webブラウザのエンコード結果:
  %91%CE%8F%DB%83f%81%5B%83%5E%82%AA%8C%A9%82%C2%82%A9%82%E8%82%DC%82%B9%82%F1%81B
URLEncoderの結果:
  %91%CE%8F%DB%83%66%81%5B%83%5E%82%AA%8C%A9%82%C2%82%A9%82%E8%82%DC%82%B9%82%F1%81%42

ありゃま結果違うでやんの.

このサイトとかで試してみると,エンコード結果は,Webブラウザとおんなじだった.
んで,不思議(?)なことに,このサイトだとどっちのエンコード文字列も正しくデコードできるんだよね.
ちなみに,URLDecoder.decode(str, "SJIS")で,Webブラウザエンコード文字列をデコードすると,

対象?fータが見つかりません?B

となった.URLエンコードなんか知るか〜.専門外じゃ.
#( ゜Д゜) ギャボー


とりあえず,もちっと賢い(?)URLエンコーダ・デコーダを見つけてくれば,やっつけパッチが作れそうだ.
#だれか教えてくり.


(追記)上記「Webブラウザの...」はIEエンコードした内容.Firefoxだとこうなった.

  %91%CE%8F%DB%83f%81%5B%83%5E%82%AA%82%A0%82%E8%82%DC%82%B9%82%F1%81B