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

时间:2013-03-11 11:29:14

标签: 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 Service Release 2

Java 1.6

3 个答案:

答案 0 :(得分:3)

String转换为char数组是另一种选择。这对我有用:

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

abcdef输出到控制台(eclipse)。

答案 1 :(得分:2)

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

System.out.println(s.replace('\u0000', ' '));

如果你需要在很多地方这样做,这里有一个hack从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方法,所有数据都通过过滤器。

答案 2 :(得分:1)

使用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