JMeter - 在http POST请求中模拟重音的UTF8字符

时间:2013-01-09 10:26:27

标签: performance post utf-8 request jmeter

我正在使用Apache JMeter 2.8在一个基于Web的信息系统上进行一些性能测试。

在不同的请求中使用了几个带重音的字母 - 例如'ä','ö','ü'或'õ'。

当涉及到运行测试脚本和执行请求时,例如某些参数中的“ä”值变为“Ô。 ('Ã'' - 这是jmeter将此类字符保存到* .jmx文件中的方式)这些http请求的内容编码设置为UTF-8。当我查看项目的内容时,所有字符都会正确显示。当我运行测试脚本时,会使用错误的值。

稍后添加: 我可以用utf8字符成功模拟GET请求,但我的POST请求中的重音字符看起来像'ä'。可能是什么原因,为什么jmeter的GET请求数据有正确的utf8编码和POSTs Windows-1252 / ISO-8859-1 / cp1252 /“ANSI”呢?

为什么会这样?提前谢谢!

3 个答案:

答案 0 :(得分:6)

显示的字符不仅取决于输入的字节,还取决于显示器用于解释它们的解码。例如,ä,当编码为UTF-8时,是字节0xC3A4

现在,0xC3A4在显示时会是什么样子?这取决于使用什么解码。以下是一些例子:

  • UTF-8:ä
  • Windows-1252 / ISO-8859-1 / cp1252 /“ANSI”:ä
  • UTF-16BE:
  • UTF-32:
  • Mac Os Roman:√§
  • Windows-1251:Г¤

等等。

答案 1 :(得分:3)

JMeter在JMX中正确保存字符,确保使用正确的编码(UTF-8)打开它们。

在JMeter中有这个属性:

  • sampleresult.default.encoding = ISO-8859-1
如果这不是默认编码,您可以更改

。但我不确定这是你面临的问题。

检查“编码?”

解决方案是:

  • 将内容编码设置为UTF-8

  • 检查参数表中的编码?,因为您的参数不是ascii的

如果这不起作用,则会显示已测试应用程序的问题:

request.setCharacterEncoding("UTF-8") must be called before using parameters if it's a Java Application.

PHP和ASP存在相同的概念。

答案 2 :(得分:1)

通过将HTTP请求实现字段从HttpClient4切换到HttpClient3.1 +并将HTTP请求内容编码值保留为空来解决问题:)

关于使用HttpClient4可能存在一些JMeter错误。