none
用VB中inet控件发送post表单到utf-8的网页里,生成的网页是乱码啊,怎么办! RRS feed

答案

  • 转成utf-8

    Code Snippet

     


    Private Const CP_ACP = 0        ' default to ANSI code page

    Private Const CP_UTF8 = 65001   ' default to UTF-8 code page

    Private 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

    Private Declare Function WideCharToMultiByte Lib "kernel32" (ByVal CodePage As Long, ByVal dwFlags As Long, ByVal lpWideCharStr As Long, ByVal cchWideChar As Long, ByVal lpMultiByteStr As Long, ByVal cchMultiByte As Long, ByVal lpDefaultChar As Long, ByVal lpUsedDefaultChar As Long) As Long

    Public Function EncodeToBytes(ByVal sData As String) As Byte() ' Note: Len(sData) > 0
        Dim aRetn() As Byte
        Dim nSize As Long
       
        nSize = WideCharToMultiByte(CP_UTF8, 0, StrPtr(sData), -1, 0, 0, 0, 0)
        ReDim aRetn(0 To nSize - 1) As Byte
        WideCharToMultiByte CP_UTF8, 0, StrPtr(sData), -1, VarPtr(aRetn(0)), nSize, 0, 0
       
        EncodeToBytes = aRetn
    End Function

     

     

    2008年4月26日 1:01
    版主

全部回复

  • 转成utf-8

    Code Snippet

     


    Private Const CP_ACP = 0        ' default to ANSI code page

    Private Const CP_UTF8 = 65001   ' default to UTF-8 code page

    Private 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

    Private Declare Function WideCharToMultiByte Lib "kernel32" (ByVal CodePage As Long, ByVal dwFlags As Long, ByVal lpWideCharStr As Long, ByVal cchWideChar As Long, ByVal lpMultiByteStr As Long, ByVal cchMultiByte As Long, ByVal lpDefaultChar As Long, ByVal lpUsedDefaultChar As Long) As Long

    Public Function EncodeToBytes(ByVal sData As String) As Byte() ' Note: Len(sData) > 0
        Dim aRetn() As Byte
        Dim nSize As Long
       
        nSize = WideCharToMultiByte(CP_UTF8, 0, StrPtr(sData), -1, 0, 0, 0, 0)
        ReDim aRetn(0 To nSize - 1) As Byte
        WideCharToMultiByte CP_UTF8, 0, StrPtr(sData), -1, VarPtr(aRetn(0)), nSize, 0, 0
       
        EncodeToBytes = aRetn
    End Function

     

     

    2008年4月26日 1:01
    版主
  • 这是什么编码转成utf-8的啊?

     

    2008年4月26日 20:57
  • ANSI

    2008年4月27日 6:26
    版主
  •  

    我好像不太会用哦,我用这个转出来是乱码,我是用“哈哈哈”转的,是不是转成三个%xx的哈?我可能做错了,能不能再来点提示哈,
    2008年4月27日 19:40
  •  风雨归云 写:

     

    我好像不太会用哦,我用这个转出来是乱码,我是用“哈哈哈”转的,是不是转成三个%xx的哈?我可能做错了,能不能再来点提示哈,

    就是把一个中文字转成三个百分号形式的哪一种方法,是用哪个函数哈,我是不是很笨啊,

    2008年4月28日 7:44
  • 着个函数是返回byte数组,你可以再把它拼成字符串,但是没这个必要,你可以直接发送byte数组

    2008年4月28日 8:47
    版主
  • 我用这个转“哈”后,变成“鏥?”,这是什么编码啊,我不太懂哦,能不能生成3个百分号为头的组啊?

    它好像是个长度为3的数组,但是我用asc()对他的每个取ASC,分别为49,49,48,无论打什么中文,都是这三个ASC码,

    2008年4月28日 17:14
  • Code Snippet

    Hex()

     

     

    2008年4月29日 0:48
    版主
  •  

    非常好,非常地感激与感谢,你们是最勒劳的版主了,

     

    再问个问题,HOHO,这个函数对篇文章翻译成utf-8的时候,能全部正常翻译吗?

    2008年4月29日 8:56
  •  

    如果我要把整篇文章译码成三个“%”+HEX形式,要进行很多次的循环,如果有3000个字的文章,哪要进行3000*3=9000盗的循环,有什么方法,能快速把整篇文章译成utf-8开工的“%”+HEX啊
    2008年5月1日 3:05