Юникод и консольная интерпретация - PullRequest
1 голос
/ 25 октября 2010

Я печатаю на стандартный вывод некоторые символы из широкого диапазона UTF-8 в приложении Java.Моя консоль настроена на поддержку UTF-8.Моя проблема в том, что иногда, когда я решаю напечатать 10 символов, например, я вижу число символов, которое меньше 10.

Я думаю, это связано с консолью, которая интерпретирует некоторые символы.Есть ли какой-нибудь символ Юникода, который можно интерпретировать как: удалить предыдущий символ?Можно ли исключить их из выходных данных (каковы кодовые точки этих символов)?

Ответы [ 2 ]

1 голос
/ 25 октября 2010

Используя возврат каретки или символ возврата на задний план, вы можете получить результаты, которые вы описываете. Эта маленькая тестовая программа, например ...

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

... печатает в моем терминале (ubuntu)

$ java Test
deg
$

\r - возврат каретки, а \u0008 - символ возврата. (Возврат каретки отправляет курсор обратно в первый столбец, а backspace отправляет его обратно на один столбец.)


Чтобы удалить все эти, так называемые «управляющие символы», вы можете сделать:

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

из документы :

\p{Cntrl} Управляющий символ: [\ x00- \ x1F \ x7F]

0 голосов
/ 25 октября 2010

Очевидным является Backspace

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...