【问题标题】:How to identified given string is double byte characterset using java?如何使用java识别给定的字符串是双字节字符集?
【发布时间】:2024-01-08 22:31:02
【问题描述】:

我想使用 java 来识别给定的字符串是否是双字节字符集?

谢谢

【问题讨论】:

    标签: java encoding double-byte


    【解决方案1】:

    String 没有字符集属性,实际上始终是UTF-16(每个字符使用 16 位)。

    【讨论】:

    • 我认为您的意思是它始终是 UTF-16(尽管这并不总是意味着每个字符都使用 16 位)
    • @Adam Batkin - 是的,我的错误,已经更改了它并将其链接到 java 语言规范。
    • 我有一个文本字段,用户可以在其中输入中文、日文、英文或韩文的数据。所以我们需要想办法读取这些双字节字符。
    • @sam 文本字段会将字符存储在 "双字节" String 内部。如果需要从 charset 转换为 UTF-16,则组件会处理它。 从文本字段中获得 UTF-16 格式的 String
    • @Andreas_D,您可能会发现 -XX:+UseCompressedStrings 选项很有趣。 ;) oracle.com/technetwork/java/javase/tech/…
    【解决方案2】:

    如果您想尝试发现某些输入数据的可能字符集(例如,在文件或流中),则可以使用 ICU4J CharsetDetector

    但是当数据在您的代码中以字符串形式出现时,为时已晚。

    【讨论】:

      【解决方案3】:

      如果整个文本范围的String.codePointCount(int beginIndex, int endIndex) 不会给出零结果,则您的字符串包含多字节字符。

      【讨论】:

        最近更新 更多