打印心形符号时出现的问题

5
抱歉问一个愚蠢的问题,我们正在尝试从数据库打印心形符号到Java XML文件。但是输出结果是“?”,不确定我错在哪里。已经尝试使用字符unicode编码。作为练习,我尝试在主方法中使用它。请查看示例Java类。
public static void main(String[] args) {

    String t = "\u2665";
    String myUnicodeSymbol = "\u05D0";
    char hollowHeart = '\u2661';
    String hollowDiamond = "\u2662";
    String spade = "\u2660";
    String club = "\u2663";

    StringBuffer buffer = new StringBuffer("<HEAD>");
    buffer.append("<HEART>").append(hollowHeart).append("</HEART>");
    buffer.append("</HEAD>");
    System.out.println(t);
    System.out.println(buffer.toString());
}

输出结果是:-??不确定我漏了什么。

只是出于好奇,为什么hollowHeart是唯一用char表示的常量,而其他所有常量都是字符串?你尝试过将其表示为字符串吗?你尝试了什么,效果如何? - Edwin Buck
我曾经遇到过类似的问题。我创建了一个写入XML文件的程序。如果从Eclipse IDE启动程序,XML文件的内容符合预期,但如果从Windows控制台启动,则会出现大量“?”符号。你是如何编写你的XML文件的? - ka3ak
之前尝试了各种方法,先是用String,然后为了测试改成了char。 - Kiran
2个回答

7

我认为这取决于控制台输出的设置。

我已经在Eclipse中编译和运行了你的代码,并看到了心形符号。但是,如果我从标准的Windows控制台运行程序,那么我也会看到“?”而不是心形符号。

然而,你需要更改Eclipse的标准设置。

Window -> Preferences -> General -> Workspace -> set "Text file encoding" to "Other: UTF-8"

1
+1 我也这么想,但是从我的工作电脑上无法确认这一点 :D - Serhiy

0

System.out.println不支持我认为MAC中的Unicode字符。

参考来自MACWORLD

尝试这个

PrintStream out = new PrintStream(System.out, true, "UTF-8");

out.println(t);

您还需要抛出UnsupportedEncodingException或处理它。


还没有成功,我尝试了在Eclipse工作台中相同的操作,请查看输出:-? <HEAD><HEART>?</HEART></HEAD> ♡ 代码如下:public static void main(String[] args) { String t = "\u2665"; String myUnicodeSymbol = "\u05D0"; String hollowHeart = "\u2661"; String hollowDiamond = "\u2662"; String spade = "\u2660"; String club = "\u2663"; PrintStream out; try { out = new PrintStream(System.out, true, "UTF-8"); out.println(spade); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } - Kiran

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接