[英]Print unicode character in java
在java中显示unicode
字符显示“?” 符号。 例如,我尝试打印“अ”。 它的unicode
编号是U+0905,html表示是“अ”。 下面的代码打印“?” 而不是unicode
字符。
char aa = '\u0905';
String myString = aa + " result" ;
System.out.println(myString); // displays "? result"
有没有办法直接从unicode
本身显示unicode
字符而不使用unicode
数字? 即“अ”保存在文件中,现在显示 jsp 中的文件。
Java 定义了两种类型的流,字节和字符。
System.out.println() 不能显示Unicode 字符的主要原因是System.out.println() 是一个字节流,只处理16 位字符的低8 位。
为了处理 Unicode 字符(16 位 Unicode 字符),您必须使用基于字符的流,即 PrintWriter。
PrintWriter 支持print() 和println() 方法。 因此,您可以像使用 System.out 一样使用这些方法。
PrintWriter printWriter = new PrintWriter(System.out,true);
char aa = '\u0905';
printWriter.println("aa = " + aa);
尝试使用 utf8 字符集 -
Charset utf8 = Charset.forName("UTF-8");
Charset def = Charset.defaultCharset();
String charToPrint = "u0905";
byte[] bytes = charToPrint.getBytes("UTF-8");
String message = new String(bytes , def.name());
PrintStream printStream = new PrintStream(System.out, true, utf8.name());
printStream.println(message); // should print your character
您的myString
变量包含完全正确的值。 问题必须是System.out.println(myString)
的输出,它必须将一些字节发送到某些输出以显示您想要查看的字形。
System.out
是使用“平台默认编码”将字符转换为字节序列的 PrintStream - 也许您的平台不支持该字符。 例如,在我在德国的 Windows 7 计算机上,默认编码是 CP1252,并且此编码中没有与您的字符对应的字节序列。
或者也许编码是正确的,但只是从字符创建图形字形的字体没有那个字符。
如果您将输出发送到 Windows CMD.EXE 窗口,那么可能这两个原因都适用。
但请放心,您的字符串是正确的,如果您将其发送到可以处理它的目的地(例如 Swing JTextField),它将正确显示。
Unicode 是用于打印任何字符或符号的唯一代码。
您可以使用来自 --> https://unicode-table.com/en/ 的 unicode
下面是在 Java 中打印符号的示例。
package Basics;
/**
*
* @author shelc
*/
public class StringUnicode {
public static void main(String[] args) {
String var1 = "Cyntia";
String var2 = new String(" is my daughter!");
System.out.println(var1 + " \u263A" + var2);
//printing heart using unicode
System.out.println("Hello World \u2665");
}
}
******************************************************************
OUTPUT-->
Cyntia ☺ is my daughter!
Hello World ♥
我在 Eclipse 中遇到了同样的问题。 我通过将控制台的编码格式从 ISO-8859-1 切换到 UTF-8 解决了我的问题。 您可以在 Run/Run Configurations/Common 菜单中进行。
https://eclipsesource.com/blogs/2013/02/21/pro-tip-unicode-characters-in-the-eclipse-console/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.