加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

delphi – 我该怎么用? UTF8或UTF16?

发布时间:2020-12-15 10:05:18 所属栏目:大数据 来源:网络整理
导读:我必须在国际上分发我的应用程序. 假设我有一个控件(如备忘录),用户输入一些文本.用户可以是日语,俄语,加拿大等 我想将字符串保存为磁盘作为TXT文件供以后使用.我将使用我的OWN函数来编写文本,而不是像TMemo.SaveToFile()这样的东西. 如何将字符串保存到磁盘
我必须在国际上分发我的应用程序.

假设我有一个控件(如备忘录),用户输入一些文本.用户可以是日语,俄语,加拿大等
我想将字符串保存为磁盘作为TXT文件供以后使用.我将使用我的OWN函数来编写文本,而不是像TMemo.SaveToFile()这样的东西.

如何将字符串保存到磁盘?在UTF8或UTF16格式?

谢谢

解决方法

它们之间的主要区别在于UTF8向后兼容ASCII.只要您只使用前128个字符,则不支持Unicode感知的应用程序仍然可以处理数据(这可能是一个优点或缺点,具体取决于您的方案).特别是,当切换到UTF16时,每个API函数需要调整16位字符串,而使用UTF8时,如果不进行任何字符串处理,则可以将旧的API函数保留不变.
UTF8也不依赖于endianess,而UTF16则可能会使字符串I / O复杂化.

一个常见的误解是,UTF16更容易处理,因为每个字符总是占据两个字节.也就是说,不幸的是不是这样. UTF16是一种可变长度编码,其中字符可能占用2或4字节.所以与UTF8有关可变长度问题的任何困难也适用于UTF16.

最后,存储大小:关于UTF16的另一个常见的神话是,对于大多数外语,它比UTF8更具有存储效率.所有欧洲语言的UTF8占用较少的存储空间,每个字符可以编码一个或两个字节.非BMP字符在UTF8和UTF16中占用4个字节. UTF16占用较少存储空间的唯一情况是,如果您的文本主要由U 0800到U FFFF范围内的字符组成,其中存储了中文,日文和印地文字符.

BoostCon 2014年詹姆斯·麦克奈利斯(James McNellis)发表了很好的演讲,详细讨论了不同编码之间的各种权衡.即使这个谈话在C中被称为Unicode,整个上半部分实际上是语言不可知的. video recording of the full talk is available at Boostcon’s Youtube channel,而slides can be found on github.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读