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