jmeter接口返回中文顯示成亂碼

工作中常見(jiàn)的jmeter調(diào)用接口時(shí)遇到亂碼有3種情況
1.訪問(wèn)httpbin.org時(shí),入?yún)髦形?,響?yīng)中包含入?yún)⒌臄?shù)據(jù)時(shí),中文顯示為unicode
image.png
2.訪問(wèn)百度首頁(yè)時(shí),接口返回的是亂碼(是真正的亂碼,根本看不出來(lái)是什么字母)
image.png
3.請(qǐng)求響應(yīng)中的出參應(yīng)顯示中文,現(xiàn)在是?
image.png

解決方法:
此時(shí),我們可以先嘗試將jmeter配置文件jmeter.properties 修改其中一行(在安裝jmeter時(shí)的目錄里)
sampleresult.default.encoding=UTF-8
一定記得改完配置文件后重啟jemeter

image.png
重啟成功后再次運(yùn)行,這次訪問(wèn)百度的響應(yīng)中亂碼已經(jīng)沒(méi)了,正常顯示中文
image.png

但是httpbin.org中的響應(yīng)還是unicode,沒(méi)有變化。
那只能繼續(xù)想其他方法:
1.在線程組右擊增加HTTP信息頭管理器
增加Content-Type:application/json;charset=UTF-8
重新執(zhí)行后,在 【查看結(jié)果樹(shù)】 中查看響應(yīng),沒(méi)有作用

2.在線程組中右擊點(diǎn)擊【添加】--后置處理器--BeanShell PostProcessor
在腳本里寫(xiě)上
prev.setDataEncoding("utf-8");
重新執(zhí)行,在 【查看結(jié)果樹(shù)】 中查看響應(yīng),沒(méi)有作用

3.繼續(xù)網(wǎng)上找解決方案,看到在后置處理器中添加另一種腳本
重新執(zhí)行,在 【查看結(jié)果樹(shù)】 中查看響應(yīng),終于顯示成中文了

image.png

腳本如下:

//獲取響應(yīng)代碼Unicode編碼的
        String s2=new String(prev.getResponseData(),"UTF-8");
//---------------以下步驟為轉(zhuǎn)碼過(guò)程---------------
        char aChar;
        int len= s2.length();
        StringBuffer outBuffer=new StringBuffer(len);
        for(int x =0; x <len;){
            aChar= s2.charAt(x++);
            if(aChar=='\\'){
                aChar= s2.charAt(x++);
                if(aChar=='u'){
                    int value =0;
                    for(int i=0;i<4;i++){
                        aChar= s2.charAt(x++);
                        switch(aChar){
                            case'0':
                            case'1':
                            case'2':
                            case'3':
                            case'4':
                            case'5':
                            case'6':
                            case'7':
                            case'8':
                            case'9':
                                value=(value <<4)+aChar-'0';
                                break;
                            case'a':
                            case'b':
                            case'c':
                            case'd':
                            case'e':
                            case'f':
                                value=(value <<4)+10+aChar-'a';
                                break;
                            case'A':
                            case'B':
                            case'C':
                            case'D':
                            case'E':
                            case'F':
                                value=(value <<4)+10+aChar-'A';
                                break;
                            default:
                                throw new IllegalArgumentException(
                                        "Malformed   \\uxxxx  encoding.");}}
                    outBuffer.append((char) value);}else{
                    if(aChar=='t')
                        aChar='\t';
                    else if(aChar=='r')
                    aChar='\r';
                    else if(aChar=='n')
                    aChar='\n';
                    else if(aChar=='f')
                    aChar='\f';
                    outBuffer.append(aChar);}}else
                outBuffer.append(aChar);}
//-----------------以上內(nèi)容為轉(zhuǎn)碼過(guò)程---------------------------
//將轉(zhuǎn)成中文的響應(yīng)結(jié)果在查看結(jié)果樹(shù)中顯示
        prev.setResponseData(outBuffer.toString());

4.HTTP請(qǐng)求填寫(xiě)內(nèi)容編碼
出現(xiàn)第三種情況,可以再去檢查下HTTP請(qǐng)求中的內(nèi)容編碼,這里沒(méi)有填寫(xiě)任何編碼,現(xiàn)在填寫(xiě)上utf-8后,再次請(qǐng)求后,中文顯示成功

image.png

image.png

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容