【问题标题】:Trouble reading special characters (Java)读取特殊字符时遇到问题(Java)
【发布时间】:2011-06-12 02:30:23
【问题描述】:

我正在制作一个使用特殊加密的聊天客户端。从输入缓冲区中读取 «、ƒ、̕ 等字母时出现问题。

我将它们读入字节数组并尝试使用

Connection.getInputStream().read();

还有使用

BufferedReader myInput = new BufferedReader(
    new InputStreamReader(Connection.getInputStream()));

但似乎有问题,因为它将它们显示为方框。

【问题讨论】:

  • 如果您使用的是 Windows 并在命令行上运行,则不会显示 unicode 字符。

标签: java encoding byte character


【解决方案1】:

您必须确保您的 InputStreamReader 使用相同的字符集将字节解码为字符,而不是发送者使用的字符集将字符编码为字节。看看 InputStreamReader 的其他构造函数。

您还必须确保用于显示字符的字体支持您的特殊字符。

【讨论】:

    【解决方案2】:

    通过new InputStreamReader(..,"utf-8") 或您输入的任何内容在流上设置正确的编码。

    【讨论】:

      【解决方案3】:

      将字节数组转换为指定字符集的字符串。

      String data = new String(byte[], "UTF-8");
      

      确保显示字体支持 UTF-8 或您指定的编码字符集。

      【讨论】:

        【解决方案4】:

        您可以尝试使用DataInputStream 和 readChar() 方法。

          DataInputStream in = new DataInputStream(myinput);
          //where muinput is your BufferedInputStream.
        
          char c = in.readChar();
        

        应该做你想做的。

        【讨论】:

        • 没有解决OP的代码对默认编码敏感的根本问题,而不是正在读取的资源的编码。
        猜你喜欢
        • 2015-01-03
        • 2010-11-14
        • 2011-04-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多