首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Java日语字符字符串大小(以字节为单位

Java日语字符字符串大小(以字节为单位
EN

Stack Overflow用户
提问于 2013-06-24 01:05:21
回答 3查看 4.7K关注 0票数 2

我正在尝试计算日语字符串'漢字仮名交じり文‘的长度:

代码语言:javascript
运行
复制
    String testStr = "漢字仮名交じり文";
    try {
        System.out.println("Length : " + testStr.getBytes("UTF-16").length);
    }
        catch(Exception ex) {
        ..... 
    }

字符串中有8个字符,下面的摘录显示: 18。为什么是18?

EN

回答 3

Stack Overflow用户

发布于 2013-06-24 02:48:16

它是18,因为您有8个字符,每个字符编码为UTF-16,这意味着每个字符有2个字节。因此,这是8*2=16加上在字节数组开始处插入的2个字节的BOM!

这是您的字节序列(feff是所谓的BOM或byte Order Mark,它允许检测字节序列是否使用低端字节顺序或高端字节顺序):

代码语言:javascript
运行
复制
fe ff 6f 22 5b 57 4e ee 54 0d 4e a4 30 58 30 8a 65 87

这就是我打印字节序列的方式(当然,这是仅用于测试的原始代码):

代码语言:javascript
运行
复制
final String text = "漢字仮名交じり文";
byte[] bytes = text.getBytes("UTF-16");
for (int i=0; i<bytes.length; ++i) {
    System.out.printf("%02x ", bytes[i]);
}
票数 7
EN

Stack Overflow用户

发布于 2013-06-24 01:09:22

您得到的是字节数,而不是字符数。根据编码(您使用的是UTF-16),一个字符可以是1到4个字节。

票数 4
EN

Stack Overflow用户

发布于 2013-06-24 01:29:44

如果您真的想要查找给定字符串中的字符数,一种简单的方法(不是最佳的)是

代码语言:javascript
运行
复制
   String testStr = "漢字仮名交じり文";
   System.out.println(testStr.toCharArray().length);

打印8张

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

https://stackoverflow.com/questions/17263161

复制
相关文章

相似问题

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