【问题标题】:Why does the string "¿" get translated to "¿" when calling .getBytes()为什么调用 .getBytes() 时字符串“¿”会被翻译成“¿”
【发布时间】:2008-10-06 20:34:38
【问题描述】:

当使用

写出字符串“¿”时
System.out.println(new String("¿".getBytes("UTF-8")));

¿ 被写入,而不仅仅是 ¿。

为什么?我们该如何解决?

【问题讨论】:

    标签: java utf-8 character-encoding


    【解决方案1】:

    您不必使用 UTF-16 来解决这个问题:

    new String("¿".getBytes("UTF-8"), "UTF-8");
    

    工作得很好。只要给getBytes()方法的编码和你传递给String构造函数的编码一样,你应该没问题!

    【讨论】:

    • 这正是我所说的,而且我链接到了 API 文档。 ;)
    【解决方案2】:

    您需要在 String 构造函数中指定 Charset(参见 API docs)。

    【讨论】:

      【解决方案3】:

      试试:

      System.out.println(new String("¿".getBytes("UTF-8"), "UTF-8"));
      

      在将字符串转换为字节时以及将字节转换回字符串时,您都需要指定编码。

      【讨论】:

        【解决方案4】:

        听起来系统控制台不是 UTF-8

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-02-22
          • 1970-01-01
          • 1970-01-01
          • 2018-10-08
          相关资源
          最近更新 更多