7.7 如何解决脚本中的乱码问题
1.问题提出
平时在对Web应用程序性能测试的时候,可能会出现录制的脚本中汉字变为乱字符的现象。
2.问题解答
在所有字符集中,最知名的可能要数被称为ASCII的7位字符集了。它是美国信息交换标准委员会(AmericanStandards Committee for Information Interchange)的缩写,为美国英语通信所设计。它由128个字符组成,包括大小写字母、数字0~9、标点符号、非打印字符(换行符、制表符等4个)以及控制字符(退格、响铃等)。
但是,由于它是针对英文设计的,当处理带有音调标号(形如汉语的拼音)的欧洲文字时就会出现问题。因此,创建出了一些包括255个字符的由ASCII扩展的字符集。其中有一种通常被称为IBM字符集,它把值为128~255的字符用于画图和画线,还有一些特殊的欧洲字符。另一种8位字符集是ISO8859-1 Latin 1,也简称为ISOLatin-1。它把位于128~255的字符用于拉丁字母表中特殊语言字符的编码,也因此而得名。
亚洲和非洲语言也不能被8位字符集所支持。但是把汉语、日语和越南语的一些相似的字符结合起来,在不同的语言里,使不同的字符代表不同的字,这样只用2个字节就可以编码地球上几乎所有地区的文字。因此,创建了UNICODE编码。它通过增加一个高字节对ISO Latin-1字符集进行扩展,当这些高字节位为0时,低字节就是ISO Latin-1字符。UNICODE支持欧洲、非洲、中东、亚洲(包括统一标准的东亚象形汉字和韩国象形文字)。但是,UNICODE并没有提供对诸如Braille、Cherokee、Ethiopic、Khmer、Mongolian、Hmong、TaiLu、Tai Mau文字的支持。同时它也不支持如Ahom、Akkadian、Aramaic、Babylonian Cuneiform、Balti、Brahmi、Etruscan、Hittite、Javanese、Numidian、OldPersian Cuneiform、Syrian之类的古老的文字。
所以,对可以用ASCII表示的字符使用UNICODE并不高效,因为UNICODE比ASCII占用大一倍的空间,而对ASCII来说高字节的0对它毫无用处。为了解决这个问题,就出现了一些中间格式的字符集,它们被称为通用转换格式,即UTF(UniversalTransformation Format)。目前存在的UTF格式有UTF-7、UTF-7.5、UTF-8、UTF-16,以及UTF-32。本文讨论UTF-8字符集。
UTF-8是UNICODE的一种变长字符编码,由Ken Thompson于1992年创建。现在已经标准化为RFC 3629。UTF-8用1~6个字节编码UNICODE字符。如果UNICODE字符由2个字节表示,则编码成UTF-8很可能需要3个字节,而如果UNICODE字符由4个字节表示,则编码成UTF-8可能需要6个字节。用4个或6个字节去编码一个UNICODE字符可能太多了,但很少会遇到那样的UNICODE字符。
上面介绍了一些关于字符集的内容,可能也明白了为什么在脚本中会产生乱字符,主要原因就是因为默认情况下应用的是ASCII字符集,所以脚本中的汉字就显示为乱字符了。解决方式是通过选择【Tools】>【Recording Options...】>【HTTP Properties】>【Advanced】>【Support charset】项,选中“UTF-8”选项就可以解决这个问题,如图7-18所示,如果您还想调整脚本的字体,也可以通过选择【Tools】>【General Options】>【Environment】项,单击【Select Font...】按钮,选择适合的字体及字体的大小,如图7-19所示。
图7-18 录制选项对话框 图7-19 常规选项对话框
图7-18中Supportcharset(支持字符集)说明如下。
l UTF-8。通过该选项可支持UTF-8编码。该选项指示VuGen将非ASCII的UTF-8字符转换为本地计算机上的编码,以便在VuGen编辑器中正确显示它们。如果启用UTF-8支持选项,则无法录制非UTF-8字符集的站点。
EUC-JP。对于日文版Windows的用户,请选择该选项以支持使用EUC-JP字符编码的网站。该选项指示VuGen将EUC-JP字符转换为本地计算机上的编码,以便在VuGen编辑器中正确显示它们。VuGen会将所有EUC-JP(日文版UNIX)字符串转换为本地计算机上的SJIS(日文版Windows)编码,并在脚本中添加web_sjis_to_euc_param函数。
更多信息请关注大开科技公众号或官方网站
www.dakaikeji.com.cn