51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2468|回复: 3
打印 上一主题 下一主题

[原创] 从数据库取出的记录是乱码,怎么办

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2011-6-13 16:47:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 FLY000 于 2011-6-14 09:33 编辑

mysql数据库的默认编码是latin,QTP连接数据库从中取出的记录中文显示为乱码;
在浏览器上设置编码方式为UTF-8,可以数据表记录中的中文字符可以正常显示;

我试过了如下方法都行不通:
1. 修改数据库的编码为utf-8,取出的记录仍然是中文显示为乱码
2. 创建数据库,设置编码为utf-8,导入数据文件,仍然中文显示为乱码
3. 在QTP中将连接数据库取出的值转换为utf-8编码,转化后中文乱码变成其他乱码

附件是需要转换编码的文件

RecordString = ConvertTo(txtPath,cString,"utf-8")

  1. Function ConvertTo(FileUrl,ConvertString,CharSet)
  2.    Call WriteToFile(FileUrl,ConvertString,CharSet)
  3.    cString= ReadFile(FileUrl,CharSet)
  4.    ConvertTo = cString
  5. End Function
复制代码

  1. Function ReadFile(FileUrl, CharSet)  
  2.     Dim Str  
  3.     Set stm = CreateObject("Adodb.Stream")  
  4.     stm.Type = 2  
  5.     stm.mode = 3  
  6.     stm.charset = CharSet  
  7.     stm.Open  
  8.     stm.loadfromfile FileUrl  
  9.     Str = stm.readtext  
  10.     stm.Close  
  11.     Set stm = Nothing  
  12.     ReadFile = Str  
  13. End Function
复制代码

  1. Function WriteToFile (FileUrl, Str, CharSet)  
  2.         Dim fso,f
  3.         Set fso = CreateObject("Scripting.FileSystemObject")
  4.    If Not fso.FileExists(FileUrl) Then
  5.                 Set f = fso.CreateTextFile(FileUrl)
  6.         Else
  7.                 Set f = fso.OpenTextFile(FileUrl,8)
  8.                 f.Close
  9.                 Set f = nothing
  10.         End If

  11.     Set stm = CreateObject("Adodb.Stream")  
  12.     stm.Type = 2  
  13.     stm.mode = 3  
  14.     stm.charset = CharSet  
  15.     stm.Open  
  16.     stm.WriteText Str  
  17.     stm.SaveToFile FileUrl, 2  
  18.     stm.flush  
  19.     stm.Close  
  20.     Set stm = Nothing  
  21. End Function
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

  • TA的每日心情
    开心
    2018-7-13 14:04
  • 签到天数: 6 天

    连续签到: 1 天

    [LV.2]测试排长

    2#
    发表于 2011-6-14 09:16:38 | 只看该作者
    我想问一下,你用ADODB.Streame写文件

    与fso 写文件.

    在功能实现上有什么差别吗?

    用fso做不到吗?

    你的问题,与数据库编码无关,是你写文件与读文件的问题.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3#
     楼主| 发表于 2011-6-14 09:27:58 | 只看该作者
    我想问一下,你用ADODB.Streame写文件

    与fso 写文件.

    在功能实现上有什么差别吗?

    用fso做不到吗?
    ...
    17800455 发表于 2011-6-14 09:16



        ADODB.Streame写文件 可以设置文件的编码stm.charset = CharSet,也就是通过这个方法写和读来实现将原始的latin编码的字符转换为utf-8的编码
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    4#
     楼主| 发表于 2011-6-14 09:31:50 | 只看该作者
    这个帖子也是讲的编码转换的问题
    http://bbs.51testing.com/thread-145790-1-2.html
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-16 02:49 , Processed in 0.075395 second(s), 28 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表