高分请教如何将UTF8的xml转换成ascii呀

seehere 2004-04-28 01:58:46

马上结贴,马上给分
谢谢!
...全文
337 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
supergreenbean 2004-04-30
  • 打赏
  • 举报
回复
可能问题在于你的strRequest上,因为从文件读进来的UTF8码的内容保存到String类型变量中的时候可能会有些变化,所以我的函数才用了直接字节数组的输入。而对于UTF8码的文件我一般也是用Binary模式打开,然后直接把内容读到字节数组中的
seehere 2004-04-30
  • 打赏
  • 举报
回复
我的用法如下,strRequest 就为输入的字符串,strRequest2 为输出的字符串
你看看问题在什么地方?期待你的回答,谢谢
Public Sub CheckResult(strRequest As String)
Dim lresult As Long
Dim strRequest2 As String
Dim lLength As Long
Dim lBufferSize As Long
Dim bUTF8() As Byte
bUTF8() = StrConv(strRequest, vbFromUnicode)
lLength = UBound(bUTF8) + 1
lBufferSize = lLength * 2
strRequest2 = String$(lBufferSize, Chr(0))
lresult = MultiByteToWideChar(CP_UTF8, 0, VarPtr(bUTF8(0)), lLength, StrPtr(strRequest2), lBufferSize)
end sub
supergreenbean 2004-04-30
  • 打赏
  • 举报
回复
是不是可以这样用呢?

dim b() as byte
redim b(totalBytes -1)
winsock1.getdata b
seehere 2004-04-30
  • 打赏
  • 举报
回复
winsock
我目前处理是先getdata,然后从getdata中取到body
supergreenbean 2004-04-30
  • 打赏
  • 举报
回复
你是用inet还是winsock的?
这两个好像都有直接读取字节数组的功能的吧
seehere 2004-04-30
  • 打赏
  • 举报
回复
我的strRequest不是从文件中读到的,而是来自一个http请求包的body部分
如何处理比较好了?
谢谢
supergreenbean 2004-04-29
  • 打赏
  • 举报
回复
我试了一下,函数应该是对的啊。不知你是怎么用的呢?
seehere 2004-04-29
  • 打赏
  • 举报
回复
非常感谢!!
supergreenbean 2004-04-28
  • 打赏
  • 举报
回复
这样啊,那我明天再帮你看看吧,上个月给别人解答过类似的问题,我再找找答案……
seehere 2004-04-28
  • 打赏
  • 举报
回复
我的意思是:
我刚才试了一下,str为UTF8,可结果是UTF8_Decode又做了utf8转码,而不是ascii转码
supergreenbean 2004-04-28
  • 打赏
  • 举报
回复
str就是UTF8编码内容的字符串
seehere 2004-04-28
  • 打赏
  • 举报
回复
怎么把UTF8的再次做了一次UTF8转换了
应该是UTF8->ASCII
目前情况是UTF8->UTF8,
ASCII->UTF8
请帮忙,谢谢
supergreenbean 2004-04-28
  • 打赏
  • 举报
回复
那就
dim str as string
str="...."

open "c:\ascii.xml" for output as #1
print #1,UTF8_Decode(strconv(str,vbfromunicode))
close #1
seehere 2004-04-28
  • 打赏
  • 举报
回复
请问xml如果不是一个文件而是string,如何处理
谢谢
nik_Amis 2004-04-28
  • 打赏
  • 举报
回复
up
ryuginka 2004-04-28
  • 打赏
  • 举报
回复
疯狂学习,帮楼主顶一下
ganzhiruogy 2004-04-28
  • 打赏
  • 举报
回复
如果可行的话,加入收藏!
supergreenbean 2004-04-28
  • 打赏
  • 举报
回复
Public Declare Function MultiByteToWideChar Lib "kernel32" (ByVal CodePage As Long, ByVal dwFlags As Long, ByVal lpMultiByteStr As Long, ByVal cchMultiByte As Long, ByVal lpWideCharStr As Long, ByVal cchWideChar As Long) As Long
Public Const CP_UTF8 = 65001

Public Function UTF8_Decode(bUTF8() As Byte) As String
Dim lRet As Long
Dim lLen As Long
Dim lBufferSize As Long
Dim sBuffer As String
Dim bBuffer() As Byte

lLen = UBound(bUTF8) + 1

If lLen = 0 Then Exit Function

lBufferSize = lLen * 2

sBuffer = String$(lBufferSize, Chr(0))

lRet = MultiByteToWideChar(CP_UTF8, 0, VarPtr(bUTF8(0)), lLen, StrPtr(sBuffer), lBufferSize)

If lRet <> 0 Then
sBuffer = Left(sBuffer, lRet)
End If

UTF8_Decode = sBuffer
End Function


dim b() as byte
redim b(filelen("c:\utf8.xml")-1)
open "c:\utf8.xml" for binary as #1
get #1,,b
close #1

open "c:\ascii.xml" for output as #1
print #1,UTF8_Decode(b())
close #1

7,787

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧