我在Java應用程序中向標準輸出打印來自UTF-8範圍的一些字符。我的控制檯配置爲支持UTF-8。我的問題是,有時當我決定打印10個字符時,例如,我看到的字符數小於10.Unicode和控制檯解釋
我認爲這是由於解釋某些字符的控制檯。是否有一些unicode字符可以被解釋爲:刪除前一個字符?是否有可能將它們從輸出中排除(這些字符的代碼點是什麼)?
我在Java應用程序中向標準輸出打印來自UTF-8範圍的一些字符。我的控制檯配置爲支持UTF-8。我的問題是,有時當我決定打印10個字符時,例如,我看到的字符數小於10.Unicode和控制檯解釋
我認爲這是由於解釋某些字符的控制檯。是否有一些unicode字符可以被解釋爲:刪除前一個字符?是否有可能將它們從輸出中排除(這些字符的代碼點是什麼)?
使用回車或退格字符像你描述的,你可以得到結果。比如這個小測試程序...
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]
明顯的是backspace
我使用myString.replaceAll(「[\ r \ u0008]」,「」)從輸出中刪除了這些字符。不過,我仍然得到一些截斷的輸出。我認爲還有其他字符:( – Laurent 2010-10-25 15:09:49
更新了我的答案。 – aioobe 2010-10-25 19:06:35
它的工作原理。非常感謝:) – Laurent 2010-10-26 07:24:43