更新時間:2022-01-17 10:46:23 來源:動力節點 瀏覽2698次
中文亂碼一直都是比較讓人棘手的問題,我們在使用JMeter的過程中,也會遇到中文亂碼問題,查閱網上的資料解決方案都大同小異,而且不夠全面或者不夠詳細,分享一些jmeter亂碼解決方案給大家。
添加HTTP請求時在Content encoding后填入相應的編碼
接下來我們來看一下這種方式,可以解決哪些亂碼問題:
1.get請求中,參數有中文,我們先不填入任何編碼,看下結果會是怎樣
我們發現中文沒有亂碼,經過我的測試get請求時Content encoding中填入任何編碼或者不填都沒有影響,因為都不會亂碼。
2.post請求中參數有中文
第一次我們也先不填寫編碼:
我們發現參數出現了亂碼,那么接下來我們制定一下編碼:
我們發現不亂碼了,那么經過測試此處只要填寫時可以顯示中文的編碼,這個地方就不會亂碼,但是我們不要忽略了后臺程序的編碼,
如果后臺程序使用的編碼和你傳入的編碼不一致,那么會造成后臺程序在接收參數時亂碼,此處我將參數直接返回回來,這樣我們可以直觀的看一下效果。
那么我的后臺程序的編碼為utf-8,我們分別來看一下設置GBK和utf-8這兩種方式的結果,如下圖所示:
3.對返回結果的影響
我們請求一下百度,先不填編碼:
我們看一下返回數據,有亂碼:
那我們在填寫utf-8編碼看一下:
我們發現還是亂碼,經過測試寫啥編碼返回結果都是亂碼,所以我們可以得到結論Content encoding并不能影響返回結果。
4.添加BeanShell Sampler或者BeanShell PostProcessor
這種方式主要解決響應亂碼問題的,我們以BeanShell Sampler為例講解。
我們先不添加BeanShell Sampler,看看結果如何:
我們看到現在是亂碼,接下來我們添加一下BeanShell Sampler在來看一下,注意要在HTTP請求后面添加:
在Script處填寫如下代碼:prev.setDataEncoding("utf-8");
我們看一下結果:
我們發現亂碼好了!!!
總結一下這種方法的優點:靈活,隨時修改,重點是不需要重啟啟動Jmeter。
5.修改Jmeter的配置文件:jmeter.properties
這種方式經過我的測試,只是對響應結果有效果。
找到jmeter安裝目錄下bin目錄下的jmeter.properties文件。
然后搜索encoding,找到如下這一行代碼:
然后把前面的#去掉,后面的編碼修改成utf-8,如下圖:
然后重啟Jmeter。
接下來我們訪問一下百度看一下效果,我把BeanShell Sampler禁用。
我們發現沒有亂碼。
我們總結一下這種方式的優點:一次修改,長久使用。
6.有的地方說可以通過添加HTTP信息管理器這種方式修改編碼
在HTTP信息頭管理器中添加"Content-Type": "application/json;charset=utf-8"或者"Content-Type":"application/x-www-form-urlencoded;charset=utf-8"來進行修改編碼。
首先這種方式只能影響請求的參數,但是經過我的測試無論添加哪種都不起作用,在Jmeter中這個地方只能指定你的參數以哪種形式傳遞,是Json還是KV形式,對于編碼沒有作用,在這里我就不給大家進行演示了,大家可以自己進行測試。
7.最后來一種最牛逼的方式解決你的亂碼
最后來一種最牛逼的方式,如果以上方式都沒有解決你的亂碼,那么我們只能去修改Jmeter的源碼來解決了,因為jmeter源碼字符集不是采用的ISO,這里我們就不做介紹了,感興趣的同學可以自己嘗試一下
其實jmeter使用過程中的亂碼基本都可以找到源文件改一下源碼中的字符集編碼來進行解決。如果想了解更多相關知識,可以關注一下動力節點的Java在線學習,里面的課程更全面細致,希望對大家能夠有所幫助。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習