火山视窗与易语言 取文本长度()区别?
我将一段易语言翻译为火山后,运行结果大不相同,结果才发现 两者 取文本长度()在汉字方面输出结果不一样,这个是因为两者的编码方式不一样导致的吗?网上查的是说易语言是字节编码,火山是Unicode编码导致。易语言:
取文本长度(“1”) 结果:1
取文本长度(“a”) 结果:1
取文本长度(“一”) 结果:2
火山:
取文本长度(“1”) 结果:1
取文本长度(“a”) 结果:1
取文本长度(“一”) 结果:1
是的,W码文本是一个字一个长度,A码文本是一个字节一个长度的!! 这是系统API决定的,不是易语言或火山来决定它多长就多长的! a码英文是一个字节,中文或类似的扩展字符是两个字节。火山的utf16,无论什么字符都是两个字节 编码不同,一个是GBK 一个是utf16小端序 无论是什么编码和编程语言,这取的都是文本的字符数量,只是不同编码的字符类型是不一样的。
ANSI的字符类型是char,一个字符占一个字节,一个字通常需要占用1到2个字符,有些比较特殊的编码,比如GB18030,会用4个字符来表达一些罕见的汉字。
UTF-8的字符也是char,所以英文数字可以跟ANSI兼容,一个字可以占用1到6个字符,通常只用到4字符。
UTF-16的字符类型是宽字符wchar_t,一个宽字符占用2个字节,通常一个宽字符就足够表达大部分汉字,部分比较罕见的和emoji表情需要用2个宽字符表达。
UTF-32的字符类型是chart32_t,一个宽字符就占用4个字节,所以一个宽字符就足够表达所有字,这种编码太占空间,很少用到。 一个字符长度,一个字节长度。
页:
[1]