LoadRunner中文亂碼問題解決方法


LoadRunner中文亂碼問題解決方法

  前段時間在錄制,增強,整合 LoadRunner腳本,期間兩次遇到了中文亂碼問題。在此記錄一下中文亂碼問題的解決辦法。
   一、錄制回放中文亂碼
  我錄制登陸的腳本,用戶名中出現中文,回放的時候總是提示登陸失敗。如下圖:
  
圖1 LR回放中文亂碼
  解決中文亂碼可以在錄制的時候在Virtual User Gen的 Tools->Recoding Options -> Advanced -> Support charset -> UTF-8。重新錄制后中文亂碼問題得到解決。
   二、整合腳本中文亂碼
  錄制增強(參數化,關聯,檢查點,事務)腳本后決定將幾個腳本整合在一起。於是新建了一個空的腳本,將登陸退出公用操作分別放在vuser_init和vuser_end中,其他操作放在各自的Action中。整理完成回放后又出現中文亂碼。為解決這個問題,最關鍵的是要把本地GBK編碼的漢字轉換成UTF-8編碼格式的信息,為此我們引進loadrunner自帶的編碼函數lr_convert_string_encoding。
  int lr_convert_string_encoding ( const char *sourceString, const char *fromEncoding, const char *toEncoding, const char *paramName);
   該函數有4個參數,含義如下:
  sourceString:被轉換的源字符串。
  fromEncoding:轉換前的字符編碼。
  toEncoding:要轉換成為的字符編碼。
  paramName:轉換后的目標字符串。
   實踐一
  lr_convert_string_encoding("登陸賬號",LR_ENC_SYSTEM_LOCALE, LR_ENC_UTF8, "Account");
  web_submit_data("login.quick",
  ……
  "Name=account", "Value={Account}", ENDITEM,
  ……
  LAST);
  回放腳本的時候依然報錯。查看lr_convert_string_encoding的解釋,它會在其轉換的字符串末尾加上\x00。在C語言中\X00是一個字符串的結束,而正是這個\x00的存在導致了腳本回放失敗。
   實踐二
char tmp[100];
lr_convert_string_encoding("登陸賬號",LR_ENC_SYSTEM_LOCALE, LR_ENC_UTF8, "Account");
strcpy(tmp,lr_eval_string("{Account}"));
lr_save_string(tmp,"Account");
web_submit_data("login.quick",
……
"Name=account", "Value={Account}", ENDITEM,
……
LAST);
  通過strcpy和lr_save_string的處理屏蔽\x00的影響, 測試結果正常


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM