gpt4 book ai didi

java - 确定字符集是否为多字节的方法?

转载 作者:行者123 更新时间:2023-11-30 06:24:37 24 4
gpt4 key购买 nike

有没有办法确定给定的字符集(java.nio.charset.Charset)是否使用多个字节对字符进行编码?或者,是否有某个字符集的列表,每个字符使用/不使用超过一个字节?

我问的原因是性能调整:我需要知道任意字符串在给定字符集中的长度(以字节为单位)。在单字节编码的情况下,它只是字符串的长度。了解字符集是否为单字节将使我不必先重新编码。

您可能认为这是一个微不足道的优化,可能不值得付出努力,但我的应用程序中的大量 CPU 周期都花在了这种无意义的事情上,到目前为止我遇到的输入数据有使用了 20 多种不同的字符集。

最佳答案

最简单的方法大概是:

boolean multiByte = charset.newEncoder().maxBytesPerChar() > 1.0f;

请注意,如果 Charset 不支持编码,newEncoder 可能会抛出 UnsupportedOperationException。虽然没有记录 newDecoder 来抛出它,但 maxCharsPerByte 是不合适的。您可以使用 averageCharsPerByte - 如果它是 1 那么它很好地表明它是单字节编码,但理论上您可以有一些字节产生多个字符,并且有些每个字符占用多个字节,平均为 1...

关于java - 确定字符集是否为多字节的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16627232/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com