「Apache JMeter」でレスポンス情報がマルチバイト(今回の場合は日本語)の文字化けした場合の対処方法を2つ紹介します。
概要
「Apache JMeter」を使用していて、対向サーバからのレスポンスの結果を確認していて、マルチバイトの文字化け現象が発生したことはないでしょうか。
最初は、対向サーバ側でのレスポンスの文字コード設定に誤りがあると考えて、レスポンスのHTTPヘッダ情報の文字コードを確認して問題ないことを確認しました。また、ブラウザ、cURLなどでアクセスして確認した場合は、文字化けが発生していない状態で取得できることがわかりました。
このため、今回の問題は、「Apache JMeter」の問題と推測して、「Apache JMeter」でレスポンスの文字コードとしてどの値が使用されているのかと設定方法について調査/検証した内容を記載します。
環境
検証に使用した環境/ライブラリを次に記載します。
- OS
- バージョン:Windows 10
- Apache JMeter
- バージョン:3.3
文字化けが発生する原因について
原因は、「Apache JMeter」ではデフォルトの文字エンコードが「ISO-8859-1」となっていたため、文字化けが発生していました。
レスポンス情報のデフォルトエンコードについては「jmeter.properties」ファイルに以下のように記載されています。
# The encoding to be used if none is provided (default ISO-8859-1)
sampleresult.default.encoding=ISO-8859-1
ファイルを確認する場合は、「インストールディレクトリ/bin/jmeter.properties」にファイルがあります。
文字化けを解消するための方法について
文字化けを解消するための修正方法として、以下2つを見つけることができました。それぞれの方法を紹介します。
- デフォルト文字コードを変更する方法
- テスト毎に文字コードを変更する方法
デフォルト文字コードを変更する方法
デフォルト文字コードを変更する方法は、「jmeter.properties」を修正することです。
ファイルは「インストールディレクトリ/bin/jmeter.properties」にあります。
ファイルから「sampleresult.default.encoding」を検索して以下の通り修正します。
sampleresult.default.encoding=UTF-8
修正することでデフォルト文字コードを「UTF-8」に変更することできます。
設定後は再起動が必要なため、再起動後にテストを実施してレスポンス情報を確認してます。
テスト毎に文字コードを変更する方法
テスト毎に文字コードを変更する方法は、テスト内容に「BeanShell PostProcessor」を追加することです。
テスト内容の「テスト計画」を右クリックして、「追加」 > 「後処理」 > 「BeanShell PostProcessor」 を追加します。
追加した「BeanShell PostProcessor」の「Script」に以下の値を設定します。
prev.setDataEncoding("UTF-8")
設定後の再起動は不要なため、再度、テストを実施してレスポンス情報を確認してみてください。
まとめ
レスポンス情報の文字コードを設定する方法を2つ紹介しました。
「Apache JMeter」でマルチバイト(日本語など)のレスポンス情報を確認できるようになるため、テスト時などに有効に活用してみてください。