在java中打印带有空字符的字符串

在java中打印带有空字符的字符串,java,string,character-encoding,binary-data,Java,String,Character Encoding,Binary Data,我有一个包含空字符的字符串,即\0。如何用java打印整个字符串 String s = new String("abc\u0000def"); System.out.println(s.length()); System.out.println(s); eclipse控制台上的输出: 7 abc 长度是完整字符串的长度,但如何打印整个字符串 更新:我正在使用 Eclipse Helios服务版本2 Java 1.6使用Java 5或更高版本的代码的正确输出是 public class Te

我有一个包含空字符的字符串,即
\0
。如何用java打印整个字符串

String s = new String("abc\u0000def");
System.out.println(s.length());

System.out.println(s);
eclipse控制台上的输出:

7
abc
长度是完整字符串的长度,但如何打印整个字符串

更新:我正在使用

Eclipse Helios服务版本2


Java 1.6

使用Java 5或更高版本的代码的正确输出是

public class TestMain
{
    public static void main(String args[])
    {
        String s = new String("abc\u0000def");
        System.out.println(s.length());
        System.out.println(s);
    }
}
7
abc def


字符串
转换为
字符
数组是另一种选择。这对我很有用:

System.out.println(s.toCharArray());

它将
abcdef
输出到控制台(eclipse)。

如果eclipse不配合,我建议在打印前用空格替换空字符:

System.out.println(s.replace('\u0000', ' '));
如果您在很多地方都需要这样做,这里有一个从System.out本身过滤它们的方法:

import java.io.*;

...

System.setOut(new PrintStream(new FilterOutputStream(
        new FileOutputStream(FileDescriptor.out)) {
    public void write(int b) throws IOException {
        if (b == '\u0000') b = ' ';
        super.write(b);
    }
}));

然后您可以正常调用System.out方法,所有数据都通过过滤器。

对我有效(Eclipse控制台),输出是
7abc def
-在哪个系统、哪个控制台上启动了程序?它打印
abc def
。你还希望它打印什么?(abc&def之间实际上没有空格,它是一个空字符,但它会打印出来)所以您想要在输出中使用
\u0000
?顺便说一句,在这个上下文中没有很好的理由编写新字符串(“abc\u0000def”)。“abc\u0000def”就足够了。您想要
abc def
作为输出,还是真正想要
abc\u0000def