Java“\ u0001something”不会返回预期的结果

时间:2009-10-14 13:42:50

标签: java

我正在尝试组合一个以ascii“Start of Header”字符(0x01)开头的字符串。 我在家用电脑上做到这一点非常简单:

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

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

现在正在工作..我做同样的事情但是0x20以下的任何东西只是向终端打印0x00。 一旦我做“\ u0020”,我就会打印一个空格来输出.. 任何想法都在继续。

3 个答案:

答案 0 :(得分:3)

可能想要检查您正在使用的文件编码,默认情况下JVM运行的charset等等。不同的环境可能会有不同的设置。

答案 1 :(得分:1)

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

如果您依赖于打印不可打印的字符(未定义),可能是问题?它会引起什么问题?

答案 2 :(得分:1)

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

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