首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于字符串内部编码的BOCU-1

用于字符串内部编码的BOCU-1
EN

Stack Overflow用户
提问于 2020-02-09 03:32:48
回答 1查看 235关注 0票数 0

一些语言/平台,如Java、Javascript、Windows、Dotnet、KDE等都使用UTF16。还有一些人更喜欢UTF8。

没有语言/平台使用BOCU-1的原因是什么?JEP 254JEP 254等价于Dotnet的原理是什么?

BOCU-1申请专利的原因是什么?还有什么技术原因吗?

编辑

我的问题不是专门关于Java的。所谓JEP 254,我指的是紧凑型UTF-16,如该提案所述。我的问题是,由于BOCU-1对于几乎任何unicode字符串都是紧凑的,为什么没有任何语言/平台在内部使用它,而不是UTF-16或UTF-8。这样的使用将提高任何字符串的缓存性能,而不仅仅是ASCII或拉丁文-1。

这种用法也可能有助于支持非拉丁语编程语言的格式,如语言服务器索引格式(LSIF)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-29 08:39:26

没有语言/平台使用BOCU-1的原因是什么?

对于堆栈溢出来说,这个问题的范围太广了,一个简明的答案是不可能的。

然而,在Java的具体案例中,请注意,2002年有人提出了Java采用BOCU-1作为RFE ()的可能性。见JDK-4787935 (str)减少String的内存占用

十年后,这个错误以“不会修复”的决议结束了:

“尽管这是一个非常有趣的提议,但极不可能采用BOCU或任何其他用于内部使用的多字节编码方式(__)。此外,这可以归结为一种时空权衡,并带来不明确的长期后果。鉴于这一提议持续了很长时间,由于无法修复,因此关闭它似乎是合适的。”

JEP 254的理由是什么.?

JEP 254中有一个题为“动机”的部分,它解释了这一点,并特别指出“大多数字符串对象只包含拉丁文-1字符”。然而,如果你不满意,提出一个单独的问题。

首先检查我在这里可以问什么话题?,确保它是堆栈溢出的主题。两位评论JEP 254的人(Aleksey和Brian )在这里回复,所以你可能会得到一个权威的答案。

为什么.JEP 254等价于Dotnet?

再一次,把这作为一个单独的问题提出来。

BOCU-1申请专利的原因是什么?

这个问题在这里特别离题。:“法律问题,包括关于版权或许可的问题,是堆栈溢出的非主题”,尽管维基百科 "BOCU-1是Unicode网站上唯一一种已知受到知识产权限制的Unicode压缩方案“。

还有什么技术原因吗?

一个非常重要的非技术原因是HTML5规范明确禁止使用BOCU-1。

代码语言:javascript
复制
Avoid these encodings

The HTML5 specification calls out a number of encodings that you should avoid...

Documents must also not use CESU-8, UTF-7, BOCU-1, or SCSU encodings, since they... were never intended for Web content and the HTML5 specification forbids browsers from recognising them.

当然,这就引出了为什么HTML 5禁止使用BOCU-1的问题,而我能找到的唯一的技术原因就是元素状态

代码语言:javascript
复制
Authors must not use CESU-8, UTF-7, BOCU-1 and/or SCSU as cross-site scripting attacks with these encodings have been demonstrated.

有关使用BOCU-1的XSS漏洞的更多详细信息,请参见请参阅此GitHub链接

还请注意,按照HTML5规范,所有主要浏览器都特别不支持BOCU-1。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60133228

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档