在使用Loadrunner錄制或者回放腳本的時候有時候會出現(xiàn)亂碼的情況,來看看怎么解決這種情況,以及UTF-8及GBK字符編碼的定義是什么。
1 錄制的腳本出現(xiàn)亂碼
錄制的時候出現(xiàn)亂碼,有的時候可以正常回放,我們可以不用管它,但如果影響回放,我們可以使用以下方法解決:
1)更改錄制選項
選擇菜單欄
Tools-->Recording Options
勾選Advance頁面中的“Support Charset”和“UTF-8”兩項。
2)更改web服務(wù)器端的字符編碼
更改服務(wù)器端使用的字符編碼,使其與本地使用字符編碼一致,例如改為“gb2312”。
2 回放腳本時出現(xiàn)亂碼
LoadRunner回放腳本時,如果在日志中出現(xiàn)亂碼,可以按以下方法操作:
1)更改運行時設(shè)置:
點擊菜單欄中的Vuser,選擇Run-time Settings(或者直接按F4鍵):在彈出的窗口左側(cè)點擊Internet Protocol
Preference下的Advanced,然后在右側(cè)窗口中點擊Options按鈕,在彈出的窗體中找到General下的Convert
from/to UTF-8,將其設(shè)為Yes。
2)更改IE瀏覽器設(shè)置:
打開IE瀏覽器,在頁面-->編碼-->勾選“自動選擇”和“Unicode(UTF-8)”。
3)使用函數(shù)轉(zhuǎn)換編碼:
可以使用lr_convert_string_encoding函數(shù)來轉(zhuǎn)換編碼。
下面是一個使用的例子:
//關(guān)聯(lián)取值函數(shù),取出的值放入resp中
web_reg_save_param("resp",
"LB=responseMsg\":\"",
"RB=\",",
"NotFound=ERROR",
"Search=All",
LAST);
//請求語句
web_custom_request("pay.htm",
"URL=http://xxx/...",
"Method=POST",
"TargetFrame=",
"Resource=0",
"RecContentType=application/json",
"Referer=",
"Mode=HTML",
"EncType=application/x-www-form-urlencoded;charset=UTF-8",
LAST);
//使用轉(zhuǎn)換函數(shù)將resp值做編碼轉(zhuǎn)換并存入msg
lr_convert_string_encoding(lr_eval_string("{resp}"),"utf-8",NULL,"msg");
//輸出打印轉(zhuǎn)換編碼后的結(jié)果,便于定位問題
lr_output_message("轉(zhuǎn)換編碼后的resp-------:%s",lr_eval_string("{msg}"));
3 字符編碼介紹
UTF-8:UnicodeTransformationFormat-8bit,允許含BOM,但通常不含BOM。是用以解決國際上字符的一種多字節(jié)編碼,它對英文使用8位(即一個字節(jié)),中文使用24為(三個字節(jié))來編碼。UTF-8包含全世界所有國家需要用到的字符,是國際編碼,通用性強。UTF-8編碼的文字可以在各國支持UTF8字符集的瀏覽器上顯示。如,如果是UTF8編碼,則在外國人的英文IE上也能顯示中文,他們無需下載IE的中文語言支持包。
GBK:是國家標準GB2312基礎(chǔ)上擴容后兼容GB2312的標準。GBK的文字編碼是用雙字節(jié)來表示的,即不論中、英文字符均使用雙字節(jié)來表示,為了區(qū)分中文,將其最高位都設(shè)定成1。GBK包含全部中文字符,是國家編碼,通用性比UTF8差,不過UTF8占用的數(shù)據(jù)庫比GBD大。
GBK、GB2312等與UTF8之間都必須通過Unicode編碼才能相互轉(zhuǎn)換:
GBK、GB2312-Unicode-UTF8
UTF8-Unicode-GBK、GB2312