精易模块的 编码_Utf8到Unicode 如下:
.子程序 编码_Utf8到Unicode, 字节集, 公开
.参数 utf8字节集, 字节集
.局部变量 length, 整数型, , , 单位: Word
.局部变量 Unicode字节集, 字节集
length = _Utf8转Unicode (65001, 0, utf8字节集, -1, { }, 0)
Unicode字节集 = 取空白字节集 (length × 2)
_Utf8转Unicode (65001, 0, utf8字节集, -1, Unicode字节集, length × 2)
返回 (Unicode字节集)
紫色处,正确的应该是 length,而非 length * 2,因为该处参数的含义是指需返回的字符数(WideChar的数量)而非指需返回的字节数。
下面是我的测试例子:
.版本 2
.支持库 spec
str1 = “abcef”
调试输出 (到字节集 (str1))
wstr1 = 编码_Utf8到Unicode (到字节集 (str1))
调试输出 (wstr1)
字节集:5{97,98,99,101,102}
字节集:34{97,0,98,0,99,0,101,0,102,0,253,255,253,255,253,255,253,255,253,255,253,255,253,255,253,255,253,255,253,255,253,255,0,0}
可以看出,上述结果是完全错误的,正确的应该是
字节集:12{97,0,98,0,99,0,101,0,102,0,0,0}
不排除其他类似的编码函数存在同样的错误。还有Ansi转unicode按说和UTF8转UNICODE的代码应该是一样的,除了参数有所不同而已。
|