99101617 发表于 2023-12-22 11:50:10

火山视窗与易语言 取文本长度()区别?

我将一段易语言翻译为火山后,运行结果大不相同,结果才发现 两者 取文本长度()在汉字方面输出结果不一样,这个是因为两者的编码方式不一样导致的吗?网上查的是说易语言是字节编码,火山是Unicode编码导致。
易语言:
取文本长度(“1”)      结果:1
取文本长度(“a”)      结果:1
取文本长度(“一”)   结果:2

火山:
取文本长度(“1”)      结果:1
取文本长度(“a”)      结果:1
取文本长度(“一”)   结果:1

呵呵仙8 发表于 2023-12-22 12:20:32

是的,W码文本是一个字一个长度,A码文本是一个字节一个长度的!!

呵呵仙8 发表于 2023-12-22 12:23:30

这是系统API决定的,不是易语言或火山来决定它多长就多长的!

hcwanz 发表于 2023-12-22 13:04:39

a码英文是一个字节,中文或类似的扩展字符是两个字节。火山的utf16,无论什么字符都是两个字节

weilai 发表于 2023-12-22 13:13:04

编码不同,一个是GBK 一个是utf16小端序

Xelloss0618 发表于 2023-12-22 15:57:55

无论是什么编码和编程语言,这取的都是文本的字符数量,只是不同编码的字符类型是不一样的。

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个字节,所以一个宽字符就足够表达所有字,这种编码太占空间,很少用到。

创世魂 发表于 2023-12-22 19:41:37

一个字符长度,一个字节长度。
页: [1]
查看完整版本: 火山视窗与易语言 取文本长度()区别?