|
发表于 2007-1-2 22:06:52
|
显示全部楼层
引用第169楼白银の式神于2007-01-02 21:53发表的:
555...偶滴意思素flash上处理汉字有虾米问题...
引用第132楼well6zyl910于2007-01-01 15:10发表的:
终于知道为什么中文不对了——因为该Flash代码有Bug!
该Flash为了支持中文,修改了原来的str2binl函数:
如果是U+0000~U+00FF之间的字符,输出一个字节(低8位)
如果是U+0100~U+FFFF之间的字符,输出两个字节(UTF-16)
表面上看这样似乎很完美
但是,它没有修改hex_md5函数
该函数仍然是“core_md5(str2binl(s), s.length*chrsz)”
假设现在输入的是“中文”
那么str2binl的结果是“2D 4E FD 56”这4个字节
可s.length还是2
所以“core_md5(str2binl(s), s.length*chrsz)”等价于“core_md5(2D 4E FD 56, 16)”
虽然MD5运算程序是按照16位数据来计算的
可传过来的32位数据已经破坏了缓冲区
由于.net中的MD5是不存在Bug,一定会自动截取数据
所以用.net中的MD5类是无法模拟出该Flash的运算结果的 |
|