jmeter无效的UTF-8中间字节

时间:2014-07-08 10:03:07

标签: json utf-8 jmeter

我正在使用jMeter通过发送请求到我的测试服务器来拍摄json。

以下请求始终失败:

{     “地点”: {         “纬度”:“37.390737”,         “经度”:“ - 121.973864”     },     “category”:“Café& Bakeries” }

响应数据中的错误消息是: 无效的UTF-8中间字节0x20  在[来源:org.apache.catalina.connector.CoyoteInputStream@6073ddf0; line:6,column:20]

请求根本不会发送到服务器。 其他请求(例如将类别中的值替换为“Delis”等其他有效类别)可以很好地工作。

我猜这是与“Café”相关的编码问题,但我不知道如何解决它。 任何的想法? 谢谢!

3 个答案:

答案 0 :(得分:1)

在HTTP请求本身中,可以设置"内容编码"。我在那里设置" utf-8"它解决了问题

答案 1 :(得分:0)

您可能需要一个HTTP标头来发布该JSON:

Content-Type: application/json; charset=utf-8

如果没有这个,字符串很可能不是UTF-8编码的。 JSON应该是UTF-8,因此é的十六进制字节应为0xc3 0xa9

没有该标头,字节序列可能是0xe9,它采用ISO-8859-1编码。这可以解释错误,因为开始0xe_的UTF-8序列是3-byte sequences,因此它看到0xe9 0x20(其中0x20é之后的空格并抱怨“无效的中间字节”。

来源:Posting a JSON request with JMeter

答案 2 :(得分:0)

以上解决方案均不适用于jmeter 5.2.1

我尝试了什么?

  1. 设置jmeter属性文件:sampleresult.default.encoding = UTF-8(无效)
  2. 设置标题Content-Type = application / json; UTF-8(无效)
  3. 尝试过预处理器sampler.getArguments()。getArgument(0).setValue(new String(utf8Bytes))(无效)
  4. 幸运的是,我注意到一个字段“内容编码”(如Ofir Kolar所述)似乎终于起作用了

enter image description here