【问题标题】:Java "\u0001something" doesn't return expected resultsJava“\u0001something”不返回预期结果
【发布时间】:2009-10-14 13:42:50
【问题描述】:

我正在尝试组合一个以 ascii“标头开头”字符 (0x01) 开头的字符串。 我在家里的电脑上做了这个很简单:

String out = "\u0001this";
System.out.println(out);

在终端打印一个正方形。复制并粘贴到十六进制编辑器,我有我的 0x01;

现在在工作.. 我做同样的事情,但低于 0x20 的任何东西都只会将 0x00 打印到终端。 一旦我执行“\u0020”,我就会打印一个空格来输出.. 知道发生了什么。

【问题讨论】:

    标签: java


    【解决方案1】:

    可能想要检查您使用的文件编码、JVM 默认运行的字符集等。不同的环境可能会有不同的设置。

    【讨论】:

      【解决方案2】:

      这几乎肯定是您的终端仿真器或其他程序显示写入标准输出的功能。根据定义,该字符是不可打印的,因此终端“显示”它的方式可能会有所不同。有些打印一个框,有些是空白,有些什么都没有。

      如果您依赖于如何打印不可打印字符(未定义),也许这就是问题所在?会导致什么问题?

      【讨论】:

        【解决方案3】:

        你能把这个字符串直接写入一个文件并在十六进制编辑器中打开那个文件吗?通过将文本写入控制台,然后依靠剪切和粘贴将字节移动到不同的应用程序,有很多中间步骤可能会弄乱您的数据。

        我怀疑您的代码实际上正在运行,但您无意中掩盖了自己的(正确)结果。

        【讨论】:

        • 我想我一直在追兔子。我将字符串打印到文件中,十六进制编辑器显示正确的字符。我正在尝试通过套接字与服务器应用程序交互。我正在接收来自服务器的消息,但它没有响应我的请求。我认为这是因为没有正确发送代码,但这可能是另一个问题。谢谢!
        猜你喜欢
        • 2016-05-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-10-19
        • 1970-01-01
        • 1970-01-01
        • 2017-09-07
        • 2018-11-15
        相关资源
        最近更新 更多