Nim*_*Nim 2 java character-encoding
有没有一种方法可以确定给定的字符集(java.nio.charset.Charset)是否使用多个字节编码字符?或者,是否存在某个字符集列表,每个字符集不使用/不使用多个字节?
我要问的原因是性能调整:我需要知道给定字符集中任意字符串的长度(以字节为单位)。对于单字节编码,它只是字符串的长度。知道字符集是否为单字节将使我免于必须先对其进行重新编码。
您可能会认为这是一个微不足道的优化,可能不值得付出努力,但是我的应用程序中的许多CPU周期都花在了这种无聊的事情上,到目前为止,我遇到的输入数据已经达到20 +不同的字符集。
最简单的方法可能是:
boolean multiByte = charset.newEncoder().maxBytesPerChar() > 1.0f;
Run Code Online (Sandbox Code Playgroud)
请注意,如果不支持编码,则newEncoder可能会抛出UnsupportedOperationException该错误Charset。虽然newDecoder没有记录可以抛出该错误,但这maxCharsPerByte是不合适的。您可以使用averageCharsPerByte-如果为1,则表明它是单字节编码,这是一个很好的指示,但是从理论上讲,您可以有一些字节产生多个字符,而有些字节每个字符占用多个字节,平均为1 ...
| 归档时间: |
|
| 查看次数: |
805 次 |
| 最近记录: |