java - Unicode 和控制台解释

标签 java unicode console

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

我认为这是由于控制台解释了一些字符。是否有一些 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}      A control character: [\x00-\x1F\x7F]

关于java - Unicode 和控制台解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4015592/

相关文章:

Java接口(interface)?

python - Unicode 和 lxml 对象化数据

java - 屏蔽从控制台输入的密码:Java

linux - 如何从多个网页下载文本到文件?

java - MVC : How to properly create a view for an unknown model

java - 将圆点放入java中使用的圆弧

java - Android Studio : How to set an external file(photo from the camera) to an imageview

c++ - 如何使用 ICU 将 Unicode 代码点转换为 C++ 中的字符?

python - 配置 IDLE 以使用 Unicode

javascript - 是否可以在 NodeJS 中模拟键盘/鼠标事件?