PB9利用ADODB.Stream和ToUniCode()及ToAnsi()两个函数实现UTF-8及GB2312的转换

PB9利用ADODB.Stream和ToUniCode()及ToAnsi()两个函数实现UTF-8及GB2312的转换

下面的列子是将ANSI的文本文件转换成UTF-8的文本文件

integer li_rtn ,li_filenum 
long flen,i,loops
long bytes_read
 blob     lblb_text,b
  string ls_xmlsring
  string  str
  OLEObject ole_ADOStream  
  ole_ADOStream = CREATE OLEObject  
  li_rtn = ole_ADOStream.ConnectToNewObject("ADODB.Stream")  
//  ole_ADOStream.Type = 2 //二进制数据Binary  
//  ole_ADOStream.Mode =3 //具有读/写权限 
//  ole_ADOStream.Charset = "gb2312"
  
  ole_ADOStream.Open()
   //ole_ADOStream.WriteText(ToAnsi("你的utf_8"))
  //ole_ADOStream.LoadFromFile("C:\Z1.txt")  
  ole_ADOStream.Position = 0 //Position为0才能设置Charset  
  ole_ADOStream.Type = 2 //文本数据  
  ole_ADOStream.Charset = "utf-8" 
  //ole_ADOStream.LoadFromFile("C:\Z1.txt")
  flen=Filelength("C:\Z1.txt")
  li_filenum = FileOpen("C:\Z1.txt",StreamMode!)
  IF flen > 32765 THEN

        IF Mod(flen, 32765) = 0 THEN

            loops = flen/32765

        ELSE

            loops = (flen/32765) + 1

        END IF

ELSE

        loops = 1

END IF
FOR i = 1 to loops

        bytes_read = FileRead(li_FileNum, str)
    lblb_text=ToUniCode(str)
    ole_ADOStream.WriteText(lblb_text)
  

//        tot_b = tot_b + b

NEXT
// str=ole_ADOStream.ReadText(20)
//    messagebox("",str)
FileClose(li_filenum)

 // blob     lblb_text
//  string  str
//  FileRead(li_filenum, str)
//  lblb_text=ToUniCode(str)
//  FileClose(li_filenum)
  //ole_ADOStream.WriteText(lblb_text)
  //ole_ADOStream.WriteText(ToUniCode("你的utf_8"))
  ole_ADOStream.Flush()
  ole_ADOStream.SetEos()
   ole_ADOStream.Position = 0
  ls_xmlsring = ole_ADOStream.readtext()  // e_ADOStream.readtext(9) 表示读取文档的前9位 
 
  ole_ADOStream.SaveToFile("C:\Z1.xml",2)
  ole_ADOStream.Close()  
  destroy ole_ADOStream 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值