代码之家  ›  专栏  ›  技术社区  ›  Troskyvs

Java char编码长度应该总是x倍2?

  •  2
  • Troskyvs  · 技术社区  · 6 年前

    Java内部字符编码是UTF 16,对吗?虽然所有的ASCII都使用2字节编码,但是我希望:

         String h="hello"; 
         System.out.println(h.codePointCount(0,h.length())); 
         System.out.println(h.length()); 
    

    打印10和5,但实际上它打印5和5。

    我哪里弄错了?

    1 回复  |  直到 6 年前
        1
  •  2
  •   Anatoly Samoylenko    6 年前

    尝试

    String h="hell😀";
    System.out.println(h.codePointCount(0,h.length())); 
    System.out.println(h.length());
    

    它打印5,6。

    “__”由两个代码单位表示,每个代码单位分别为“H”、“E”、“L”、“L”。

    关于 UTF-16 :“编码是可变长度的,因为代码点是用一个或两个16位代码单元编码的…”