性能测试工具 jmeter3.0 post body 特有乱码问题

高浩 · 2016年11月14日 · 最后由 高浩 回复于 2016年11月15日 · 3384 次阅读

鉴于上篇文章的教训(已删除),重新写了一下。我只是个小白。总结一点自己学习的东西而已。

我用 jmeter,在 http 请求的 Body Data 中写的中文,为什么都是乱码—都是方框中间有个问号。乱码现象如下图:

解决思路

1、检查 jmeter.properties 文件。发现如下配置:

#JSyntaxTextArea configuration
#jsyntaxtextarea.wrapstyleword=true
#jsyntaxtextarea.linewrap=true
#jsyntaxtextarea.codefolding=true
#Set 0 to disable undo feature in JSyntaxTextArea
#jsyntaxtextarea.maxundos=50
#Change the font on the (JSyntax) Text Areas. (Useful for HiDPI screens)
#jsyntaxtextarea.font.family=Hack
#jsyntaxtextarea.font.size=14

2、百度 JSyntaxTextArea + jmeter。搜索结果:
RSyntaxTextArea 是一个支持语法着色的 Java 可视化编辑器控件,支持超过 20 种编程语言。

再回头检查这段配置,“改变字体的文本区域(jsyntax)。(用于 HIDPI 屏幕)”,顺便有查了下 “Hack” 是个什么意思—-“Hack 字体设计让标准大小的代码能清晰易读,它的特征包括大字高、宽孔径和低对比。”,还有一个我比较感兴趣的解释—“Hack 调整了一些容易引起混淆的字符形状,如字母 o 和数字 0,字母 l 和数字 1。

解决方法

尝试把上面配置项的注释,全部取消。重启 jmeter,加载脚本。如下图:

于是

jmeter2.13 没有这个问题,于是,看了下官网 jmeter3.0 更新的内容,发现编号为Bug 58933 的 bug。这个 bug 的修复中,提到了

jmeter/trunk/src/core/org/apache/jmeter/gui/util/JSyntaxTextArea.java

文件的源码

private static final boolean WRAP_STYLE_WORD = JMeterUtils.getPropDefault("jsyntaxtextarea.wrapstyleword", true);
private static final boolean LINE_WRAP       = JMeterUtils.getPropDefault("jsyntaxtextarea.linewrap", true);
private static final boolean CODE_FOLDING    = JMeterUtils.getPropDefault("jsyntaxtextarea.codefolding", true);
private static final int MAX_UNDOS           = JMeterUtils.getPropDefault("jsyntaxtextarea.maxundos", 50);
private static final String USER_FONT_FAMILY = JMeterUtils.getPropDefault("jsyntaxtextarea.font.family", JSyntaxTextArea.getDefaultFont().getName());
private static final int USER_FONT_SIZE      = JMeterUtils.getPropDefault("jsyntaxtextarea.font.size", JSyntaxTextArea.getDefaultFont().getSize());

font.family 获取的是本地默认样式。大概是默认样式,jmeter 本身不支持吧。这个地方,把 “JSyntaxTextArea.getDefaultFont().getName()” 换成 “Hack”,应该就不需要再配置 jmeter 的参数了。

private static final String USER_FONT_FAMILY = JMeterUtils.getPropDefault("jsyntaxtextarea.font.family", "Hack");

源码需改成上面的值后,重新编译源码,生效。

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 7 条回复 时间 点赞

不对的地方,希望指正。

我喜欢这种风格的

java gui 乱码估计 windows 上比较多,mac 少见

昨天在使用 JMeter 3.0 的时候正好遇到这个问题,随之百度了一下,看到了与楼主相似的文章:jmeter 随笔 (13)--jmeter3.0 post body 乱码问题,深入源码, 应该是个系列文章,楼主可否 repost 到 testerhome 来,供大家学习参考。

按照楼主的方法解决了,感谢

#4 楼 @peace 嗯,系列里我只写了几个点……,所以没有转~ 后面我看看,有用的东西,我转过来

#5 楼 @helloseven 能解决问题就好··😀

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册