Unicode和控制台解释

时间:2010-10-25 14:34:40

标签: java unicode console

我在Java应用程序中向标准输出打印了一些宽UTF-8范围的字符。我的控制台配置为支持UTF-8。我的问题是,有时候,当我决定打印10个字符时,我会看到一些小于10的字符。

我认为这是由于控制台解释了一些字符。是否有一些unicode字符可以解释为:擦除前一个字符?是否可以将它们从输出中排除(这些字符的代码点是什么)?

2 个答案:

答案 0 :(得分:1)

使用回车符或退格符可以获得您描述的结果。这个小测试程序例如......

public class Test {
    public static void main(String... args) {
        System.out.println("abc\rdef\u0008g");
    }
}

...在我的终端(ubuntu)中打印

$ java Test
deg
$

\r是回车符,\u0008表示退格符。 (回车将光标发送回第一列,退格键将其发回一列。)


要删除所有这些,所谓的“控制字符”,您可以这样做:

myString = myString.replaceAll("\\p{Cntrl}", "");

来自the docs

  

\p{Cntrl}控制字符:[\ x00- \ x1F \ x7F]

答案 1 :(得分:0)

明显的是backspace