递归火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 火山 源码 类库
查看: 2612|回复: 6
打印 上一主题 下一主题

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

[复制链接]

59

主题

233

帖子

1070

积分

金牌会员

Rank: 6Rank: 6

积分
1070
跳转到指定楼层
楼主
发表于 2023-12-22 11:50:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我将一段易语言翻译为火山后,运行结果大不相同,结果才发现 两者 取文本长度()在汉字方面输出结果不一样,这个是因为两者的编码方式不一样导致的吗?网上查的是说易语言是字节编码,火山是Unicode编码导致。
易语言:
取文本长度(“1”)      结果:1
取文本长度(“a”)      结果:1
取文本长度(“一”)     结果:2

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

回复

使用道具 举报

50

主题

567

帖子

2473

积分

金牌会员

Rank: 6Rank: 6

积分
2473
沙发
发表于 2023-12-22 12:20:32 | 只看该作者
是的,W码文本是一个字一个长度,A码文本是一个字节一个长度的!!
回复

使用道具 举报

50

主题

567

帖子

2473

积分

金牌会员

Rank: 6Rank: 6

积分
2473
板凳
发表于 2023-12-22 12:23:30 | 只看该作者
这是系统API决定的,不是易语言或火山来决定它多长就多长的!
回复

使用道具 举报

69

主题

989

帖子

4466

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
4466
地板
发表于 2023-12-22 13:04:39 | 只看该作者
a码英文是一个字节,中文或类似的扩展字符是两个字节。火山的utf16,无论什么字符都是两个字节
回复

使用道具 举报

18

主题

337

帖子

2919

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
2919
5#
发表于 2023-12-22 13:13:04 来自手机 | 只看该作者
编码不同,一个是GBK 一个是utf16小端序
回复

使用道具 举报

26

主题

1900

帖子

6924

积分

核心用户

Rank: 9Rank: 9Rank: 9

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

使用道具 举报

444

主题

1万

帖子

4万

积分

超级版主

Rank: 8Rank: 8

积分
40529
7#
发表于 2023-12-22 19:41:37 | 只看该作者
一个字符长度,一个字节长度。
安卓无障碍实战课:点击查看
交流群:641526939
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|递归火山软件开发平台 ( 鄂ICP备18029190号 )

GMT+8, 2024-11-23 22:57 , Processed in 0.095972 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表