2009-10-14 68 views
1

我试图放在一起以ascii“Start of Header”字符(0x01)开头的字符串。 我这样做我家的电脑有足够简单的:Java“ u0001something”不会返回预期的结果

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

印方到终端..复制并粘贴到十六进制编辑器,我有我的0×01;

现在在工作..我做同样的事情,但任何低于0x20只是打印0x00到终端。 只要我做“\ u0020”我得到一个空间打印输出.. 任何想法是怎么回事。

回答

3

可能要检查您使用的是什么文件编码,默认情况下JVM运行的字符集等。不同的环境可能会有不同的设置。

+0

默认设置为UTF-8。 – 2009-10-14 13:51:47

1

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

如果你依赖于如何打印一个不可打印的字符,哪个没有定义,那可能是这个问题?它造成什么问题?

1

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

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

+0

我想我一直在追兔子。我将字符串打印到一个文件中,十六进制编辑器显示正确的字符。我试图通过套接字与服务器应用程序进行交互。我正在接收来自服务器的消息,但它没有响应我的请求。我认为这是因为代码没有正确发送,但这可能是另一个问题。谢谢! – 2009-10-14 14:23:28