方块糖的工坊
方块糖的工坊

Jmeter发送syslog,解决中文乱码

jmter默认是无法发送syslog的,不过我们可以通过安装UDP request这一插件来实现,安装步骤参考JMeter发送UDP

但经实际测试这种方式含有中文的数据时,接收端会中文乱码,如下图例子所示,数字和英文字母都正常,但中文字符”我的”到了接收端变成了”??”

https://cdn.guitang.fun/Blog/20230117085440.png
https://cdn.guitang.fun/Blog/20230117084758.png

经调研,我们可以利用HexStringUDPDecoder+BeanShell PreProcessor来解决

首先将要发送的内容统一定义

https://cdn.guitang.fun/Blog/20230117084851.png

添加一个BeanShell PreProcessor,用于将参数转为16进制

https://cdn.guitang.fun/Blog/20230117084925.png

具体代码为:

String input = vars.get("paramIn_test");
log.info("input:"+input);
char[] HEX_CHARS = "0123456789ABCDEF".toCharArray();
byte[] buf = input.getBytes("UTF-8");
char[] chars = new char[2 * buf.length];
for (int i = 0; i < buf.length; ++i)
{
  chars[2 * i] = HEX_CHARS[(buf[i] & 0xF0) >>> 4];
  chars[2 * i + 1] = HEX_CHARS[buf[i] & 0x0F];
}
String output = new String(chars);
log.info("output:"+output);
vars.put("output",output);

最后,在发送时做以下两处改动,将Data Encode/Decode class改为kg.apc.jmeter.samplers.HexStringUDPDecoder,将Request Data直接使用我们上一步得到的output

https://cdn.guitang.fun/Blog/20230117085038.png

再次发送,可以看到我们乱码问题已经解决

https://cdn.guitang.fun/Blog/20230117085108.png

发表回复

textsms
account_circle
email

方块糖的工坊

Jmeter发送syslog,解决中文乱码
jmter默认是无法发送syslog的,不过我们可以通过安装UDP request这一插件来实现,安装步骤参考JMeter发送UDP 但经实际测试这种方式含有中文的数据时,接收端会中文乱码,如下图例子所…
扫描二维码继续阅读
2023-02-05