本帖最后由 roamr 于 2012-6-11 16:05 编辑 $ansiString = "信乐团-天高地厚.mp3"
;第一步,将 ANSI 字符串转换成为二进制数据
$binary1 = StringToBinary($ansiString, 4)
;第二步,将二进制数据转换成为 UTF8 字符串
$utf8String = BinaryToString($binary1, 1)
;第三步,将 UTF8 字符串转换成为二进制数据,此时发现二进制数据中有部分丢失了
$binary2 = StringToBinary($utf8String, 1)
;第四部,将二进制数据转换成为 ANSI 字符串,然后有部分文字未转换成功
$endString = BinaryToString($binary2, 4)
MsgBox(0, "", $binary1 & @CRLF & $binary2)
MsgBox(0, "", $utf8String & @CRLF & $endString)
原字符串 ansiString 在转换成 utf8 编码后,得到一串乱码。
将这串乱码转回 ansi 编码,会有类似于 ? 的字符出现。分析过程发现是有数据丢失。见上面的代码示例。
不知道数据是在转换成 utf8 字符串时丢失的,还是在将 utf8 字符串转换成二进制丢失的。
求助各位前辈,有没有一种办法可以在转换编码时不丢失数据? |