Java Formatter 类 %c %C 在控制台上转换

标签 java utf-8 utf-16 formatter

根据 Oracle 官方文档,http://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html %c 或 %C 运算符应该打印 Unnicode 字符。但是,这样的代码模拟,

System.out.format("%1$c", 97);
产生字符“a”,这是根据 ASCII 值。任何大于 255 的值都会生成“?”

编辑 您可以通过任何其他方式(例如在控制台上)打印 Unicode 字符吗?

我能得到的最接近的是通过显式地将字符集传递给输出流

<code>char[] toWirte = {913,914,915,916};
OutputStream out = new BufferedOutputStream(new FileOutputStream("test.txt"));
out.write(new String(toWirte).getBytes("UTF-16"));</code>

我猜想,Writer 实现隐式假定 UTF-8 作为字符集。

有人知道其他方法吗?

最佳答案

看一下 Unicode 代码表:

http://www.unicode.org/charts/PDF/U0000.pdf

十进制 97 是十六进制 61,定义为字符“a”。正如注释中所述,代码点 0 到 127(00 到 7F)在 Unicode 中的定义与 ASCII 相同。这是为了兼容性和更轻松的迁移而有意为之。

关于Java Formatter 类 %c %C 在控制台上转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32651905/

相关文章:

c - 我如何 "decode"一个 UTF-8 字符?

servlets - 使用 HttpServletResponse 创建 UTF-8 文件

ruby - 如何使用 ruby​​ 将 unicode 添加到 ID3 标签?

java - 将值从构造函数传递到方法

java - 从没有设置的数组中删除重复项

java - build.xml - 无法创建任务或输入 etl

c++ - Firebird 在 `UTF8 string converted to wstring` 上崩溃

utf-8 - UTF-8 不支持哪些语言?

unicode - UTF16字符总数

java - 如何在Spring Cloud DataFlow中注册应用程序?