找回密码
 加入
搜索
查看: 1928|回复: 4

汉字转二进制,编码丢失如何解决?

[复制链接]
发表于 2009-5-5 14:40:51 | 显示全部楼层 |阅读模式
本帖最后由 baikaifang 于 2009-5-5 22:36 编辑

例如汉字“水中燃烧”以ANSI方式编码的二进制值是 0xCBAED6D0C8BCC9D5,但在使用 StringToBinary 以 ANSI 编码 方式转换后得到的二进制值却是 0xCBAED6D0 ,后面的8位丢失了,然后再用 BinaryToString 以 ANSI 编码 方式转换回来后的汉字是“水中ŸĄ”,出现了乱码,请大家指定一下,如何用 ANSI编码方式 转换汉字后不丢失二进制值。
$Hex = StringToBinary("水中燃烧", 1)
MsgBox(0,"ANSI 编码", "“水中燃烧” 转二进制是:" & $Hex)
MsgBox(0,"ANSI 编码", "二进制 " & $Hex & " 转汉字是:" & BinaryToString($Hex, 1))
MsgBox(0,"正确的编码", "二进制 0xCBAED6D0C8BCC9D5 转汉字是:" & BinaryToString("0xCBAED6D0C8BCC9D5", 1))
上面提到的值 0xCBAED6D0C8BCC9D5 是我用工具 HttpWatch 捕捉网页所提交的表单得到的。

解决方法见4楼
发表于 2009-5-5 16:56:17 | 显示全部楼层
$Hex = StringToBinary("水中燃烧", 2)
MsgBox(0,"ANSI 编码", "“水中燃烧” 转二进制是:" & $Hex)
MsgBox(0,"ANSI 编码", "二进制 " & $Hex & " 转汉字是:" & BinaryToString($Hex, 2))
MsgBox(0,"正确的编码", "二进制 0xCBAED6D0C8BCC9D5 转汉字是:" & BinaryToString("0xCBAED6D0C8BCC9D5", 1))
 楼主| 发表于 2009-5-5 22:05:25 | 显示全部楼层
本帖最后由 baikaifang 于 2009-5-5 22:08 编辑

谢谢楼上的回复,你的代码还不行,因为我现在需要知道的是如何把 "水中燃烧" 这个四个汉字直接转换成二进制 0xCBAED6D0C8BCC9D5 ,而不是使用 UTF 方式转换,为什么这么要求呢,因为我在用 "水中燃烧" 登陆一个网站的时候,该网站POST到服务器数据中的用户名是用 0xCBAED6D0C8BCC9D5 表示的,由于我需要做一个通用登陆器,所以必须直接将汉字转换成以上形式。 曾在论坛里看到有朋友说 编码转换 有字节、单字、双字、四字 等转换方式,1楼的代码 StringToBinary("水中燃烧", 1) 转换后,丢失了后面8位,会不会是因为AU3默认是以字节的方式转换的,因此会丢失后半部,所以请懂的朋友指导一下,谢谢!
 楼主| 发表于 2009-5-5 22:34:13 | 显示全部楼层
问题解决了,在论坛里找到一段代码,是论坛的朋友 auto 写的,在这里谢谢了!

解决后的代码如下:
MsgBox(0,"",UrlEncode("水中燃烧"))

Func UrlEncode($Url)
Local $UrlLen
$UrlLen = StringLen($Url)
Local $EnStr,$UrlChar,$EnStr
For $i = 1 To $UrlLen Step 1
        $UrlChar = StringMid($Url, $i, 1)
                if ascw($UrlChar) > 256 Then
                        $str =StringReplace(StringToBinary($UrlChar&" ",1),"0x","")
                        $EnStr &= StringLeft($str,2) & StringRight($str,2)
                Else
                        $str =StringReplace(StringToBinary($UrlChar),"0x","")
                        $EnStr &= $str
                EndIf
Next
Return $EnStr
EndFunc
原贴地址:http://www.autoitx.com/forum.php ... hlight=%B1%E0%C2%EB
发表于 2011-7-9 07:21:50 | 显示全部楼层
收藏,以后一定用得着!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-10-1 23:46 , Processed in 0.072236 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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