一些语言/平台,如Java、Javascript、Windows、Dotnet、KDE等都使用UTF16。还有一些人更喜欢UTF8。
没有语言/平台使用BOCU-1的原因是什么?JEP 254和JEP 254等价于Dotnet的原理是什么?
BOCU-1申请专利的原因是什么?还有什么技术原因吗?
编辑
我的问题不是专门关于Java的。所谓JEP 254,我指的是紧凑型UTF-16,如该提案所述。我的问题是,由于BOCU-1对于几乎任何unicode字符串都是紧凑的,为什么没有任何语言/平台在内部使用它,而不是UTF-16或UTF-8。这样的使用将提高任何字符串的缓存性能,而不仅仅是ASCII或拉丁文-1。
这种用法也可能有助于支持非拉丁语编程语言的格式,如语言服务器索引格式(LSIF)。
发布于 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。!
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的问题,而我能找到的唯一的技术原因就是元素状态。
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。
https://stackoverflow.com/questions/60133228
复制相似问题