1. 程式人生 > 其它 >loadrunner中文轉url編碼或者中文轉HTML編碼

loadrunner中文轉url編碼或者中文轉HTML編碼

這兩天工作的時候,測試一個get介面,傳送的引數中帶中文,連結是這樣子的:http://www.baidu.com/address=江蘇省蘇州市常熟市招商城3區11號門市部

在goole瀏覽器裡直接開啟即可,Chrome瀏覽器就把漢字自動轉碼了,但是在loadrunner中抓到的指令碼就是這樣子的:

web_url("ceshi_csb_broker",
  "URL=http://xxx.xx.x.xxx/test/testTx.action?address=%E6%B1%9F%E8%8B%8F%E7%9C%81%E8%8B%8F%E5%B7%9E%E5%B8%82%E5%B8%B8%E7%86%9F%E5%B8%82%E6%8B%9B%E5%95%86%E5%9F%8E3%E5%8C%BA11%E5%8F%B7%E9%97%A8%E5%B8%82%E9%83%A8",
  "Resource=1",
  "RecContentType=application/json",
  "Referer=",
  "Snapshot=t1.inf",
  LAST);

需要將上圖的紅色部分做引數化,但是又不能直接傳漢字,所以需要把漢字再轉碼

1、先把漢字轉為UTF8格式儲存:

lr_convert_string_encoding("江蘇省蘇州市常熟市招商城3區11號門市部",LR_ENC_SYSTEM_LOCALE,LR_ENC_UTF8,"addrUtf8");

2、把變數存為引數使用

lr_save_string(lr_eval_string("{addrUtf8}"),"addrUtf8_1");

3、繼續把addUtf8_1轉碼為url格式

 web_convert_param("addrUtf8_1","SourceEncoding=PLAIN","TargetEncoding=URL",LAST);

--------這其實我還有個小疑問沒弄懂,就是如果SourceEncoding=HTML的話,也就是這樣寫

 web_convert_param("addrUtf8_1","SourceEncoding=HTML","TargetEncoding=URL",LAST);

也能正常得到想要的結果,PLAIN和HTML有啥區別?嘖嘖以後再想咯~~~~

4、列印一下addrUtf8_1的值,

lr_output_message("addrUtf8_1的值是%s----------",lr_eval_string("{addrUtf8_1}"));

得到輸出日誌

addrUtf8_1的值是%E6%B1%9F%E8%8B%8F%E7%9C%81%E8%8B%8F%E5%B7%9E%E5%B8%82%E5%B8%B8%E7%86%9F%E5%B8%82%E6%8B%9B%E5%95%86%E5%9F%8E3%E5%8C%BA11%E5%8F%B7%E9%97%A8%E5%B8%82%E9%83%A8--------

接下來正常引數化就好了,

lr_convert_string_encoding("江蘇省蘇州市常熟市招商城3區11號門市部",LR_ENC_SYSTEM_LOCALE,LR_ENC_UTF8,"addrUtf8");

——>

lr_convert_string_encoding("{address}",LR_ENC_SYSTEM_LOCALE,LR_ENC_UTF8,"addrUtf8");

所以全部的程式碼是:

	lr_convert_string_encoding("{address}",LR_ENC_SYSTEM_LOCALE,LR_ENC_UTF8,"addrUtf8");
	lr_save_string(lr_eval_string("{addrUtf8}"),"addurl");
	web_convert_param("addurl","SourceEncoding=PLAIN","TargetEncoding=URL",LAST);
	
	lr_output_message("URL轉碼後地址是addurl------%s",lr_eval_string("{addurl}"));
	
	web_url("ceshi_csb_broker", 
		"URL=http://xxx.x.xxx.xx/test-web/testTx.action?address={addurl}", 
		"Resource=1", 
		"RecContentType=application/json", 
		"Referer=", 
		"Snapshot=t1.inf", 
		LAST);

best wishes~~