• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • LoadRunner腳本中的亂碼問題以及解決辦法

    上一篇 / 下一篇  2007-12-02 09:59:14 / 個人分類:問題解決方法

    相信有不少人在使用LoadRunner的javascript.:tagshow(event, '%B9%FD%B3%CC');" href="javascript.:;" target=_self>過程中都遇到過這樣的問題:在錄制下來的腳本的中文信息出現了亂碼。關于亂碼問題,可能大家在網上也能搜到不少相關的解決辦法,我在這里就不多說了,大家自己去試驗一下吧,到底哪個辦法有效也就只有誰用誰知道了!我這里只舉一個自己遇到的實際例子來說這個問題,也許不是解決這個問題的唯一辦法,但至少也是其中的一個吧。
        被測系統采用Ajax技術,通過錄制下來的腳本看起來像下面的樣子(省略函數其它部分,下同):
        web_custom_request("CALL-H001I",
            "EncType=text/xml; charset=UTF-8",
            "BodyBinary=<request><meta><verb>CALL</verb><tid>H001I</tid></meta><data><assuid/><assutype>1</assutype><mortkind>04</mortkind><goodsasassuflag>0</goodsasassuflag><assuname>浣忔埧</assuname><papertype>01</papertype>
    <paperno>鏆傛棤鍙風爜</paperno><paperrecedate/><papergrantorgan/><turncashabil>1</turncashabil>
    <incrensuabil>1</incrensuabil><assuamt>1000000</assuamt>
    <otherassuamt>1000000.00</otherassuamt><assuleftamt/><custid>A110102641122043#1</custid><custname>闇嶈景榫"
    """x99"
            "</custname><repaynum>1</repaynum><firstmortrate/><secondmortrate/><mortstate>0</mortstate><note/><housetype>0</housetype><houseframesign/><houseformsign>01</houseformsign><housestylesign/><houseaddr>鍘﹂棬</houseaddr><housearea>100</housearea><compdate/><houseagreno/>
    <carmarksign>A1</carmarksign>
    <carmodel/><carno/><carengino/><carcolor/><caroutyear/><carrejeyear/>
    <bankid>442000050</bankid>
    <operid>031</operid></data></request>"r"n"
            "",

            LAST);
        從上面腳本的黑體部分可以看出,LoadRunner向服務器提交的請求body部分,輸入的中文字段被變成了諸如“浣忔埧”這樣的亂碼。遇到這樣的情況,相信大多數人和我最開始一樣,只能不加理會,直接點擊回放,然后我們很高興地發現,腳本回放成功了!這些亂碼是可以被LR識別的,而且到應用系統中查看運行的結果,也沒有問題,顯示的是正確的中文。但是且慢!先不要高興得太早,我們很快就會意識到:如果這個字段我們是需要進行參數化的怎么辦?我們應該如何造出這種亂碼的字呢?
        首先,我們直接用正常的字去參數化,這里只舉其中的一個例子來說明,比如<assuname>這個字段,我們用參數值“汽車”直接在腳本中替換“浣忔埧”,腳本回放失敗。
    然后就想到會不會是所有的中文字段都需要用才行呢?于是把所有的亂碼都用簡體字替換,腳本回放還是失敗。
        通過以上的兩點試驗,說明直接參數化的方法是行不通的,我們必須另找辦法。
    在LoadRunner中,為我們提供了一個字符串編碼轉換的函數lr_convert_string_encoding,用法如下:

        intlr_convert_string_encoding( const char *sourceString, const char *fromEncoding, const char *toEncoding, const char *paramName);


        該函數有4個參數,含義如下:

        sourceString:被轉換的源字符串。

        fromEncoding:轉換前的字符編碼。

        toEncoding:要轉換成為的字符編碼。

        paramName:轉換后的目標字符串。


        在本例中可以看到,我們需要把字符編碼轉換為UTF-8格式,因此用法如下:

        lr_convert_string_encoding("汽車",LR_ENC_SYSTEM_LOCALE,LR_ENC_UTF8,"str");

        這樣一來,就成功地完成了字符串的編碼轉換。此時我們就可以對"汽車"這個參數進行參數化,參數化的方法很簡單,地球人都知道!于是最終的腳本編碼看起來像這樣:

       lr_convert_string_encoding("lr_eval_string("{name}"),LR_ENC_SYSTEM_LOCALE,LR_ENC_UTF8,"str");


        完整的示例代碼如下:

        char string[5000];
        char tmp[10];

        lr_convert_string_encoding(lr_eval_string("{name}"),LR_ENC_SYSTEM_LOCALE,LR_ENC_UTF8,"str");

        strcpy(tmp,lr_eval_string("{str}"));                      
               sprintf(string,"BodyBinary=<request><meta><verb>CALL</verb><tid>H001I</tid></meta>
    <data><assuid/><assutype>1</assutype><mortkind>04</mortkind><goodsasassuflag>0</goodsasassuflag>
    <assuname>%s</assuname><papertype>01</papertype><paperno>鏆傛棤鍙風爜</paperno><paperrecedate/><papergrantorgan/><turncashabil>1</turncashabil><incrensuabil>1</incrensuabil><assuamt>1000000</assuamt><otherassuamt>1000000.00</otherassuamt><assuleftamt/><custid>A110102641122043#1</custid><custname>闇嶈景榫""x99</custname><repaynum>1</repaynum><firstmortrate/><secondmortrate/><mortstate>0</mortstate><note/><housetype>0</housetype><houseframesign/><houseformsign>01</houseformsign><housestylesign/><houseaddr>鍘﹂棬</houseaddr><housearea>100</housearea><compdate/><houseagreno/>
    <carmarksign>A1</carmarksign><carmodel/>
    <carno/><carengino/><carcolor/><caroutyear/><carrejeyear/><bankid>442000050</bankid>
    <operid>031</operid>
    </data></request>"r"n",tmp);

        web_custom_request("CALL-H001I",
            "EncType=text/xml; charset=UTF-8",
            string,
            LAST);

    TAG:

     

    評分:0

    我來說兩句

    顯示全部

    :loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

    日歷

    « 2011-03-26  
      12345
    6789101112
    13141516171819
    20212223242526
    2728293031  

    數據統計

    • 訪問量: 205
    • 日志數: 6
    • 建立時間: 2007-11-28
    • 更新時間: 2007-12-02

    RSS訂閱

    Open Toolbar
    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>