2012-02-01 22 views
5

对不起,提出一个愚蠢的问题,我们试图从数据库打印心脏符号到Java XML文件。但同样被打印为“?”不知道我错过了什么。已经试过了char 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()); 
} 

输出是: - ? ?

不知道我错过了什么。

+0

出于好奇,为什么当所有其他字符串都是空字符时,为什么hollowHeart是唯一的常量?你有没有试图将它表示为一个字符串?你有什么尝试,有什么影响? – 2012-02-01 17:19:07

+0

我以前遇到过类似的问题。我创建了一个写入XML文件的程序。如果程序是从Eclipse IDE启动的,那么XML文件的内容与预期的一样,但如果它是从Windows控制台启动的,那么它有很多“?”符号。你如何编写你的XML? – ka3ak 2012-02-01 17:36:10

+0

曾尝试各种方式previoulsy尝试与字符串然后进行测试更改为字符 – Kiran 2012-02-02 04:22:13

回答

7

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

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

但是,您需要更改Eclipse中的标准设置。

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

+1这么想,但从我的工作电脑它不可能确认此:D – Serhiy 2012-02-01 17:22:56

+0

仍然没有运气:( – Kiran 2012-02-03 01:45:47

0

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

参考From MACWORLD

尝试此

的PrintStream OUT =新的PrintStream(System.out的,真实的, “UTF-8”);

out.println(t);

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

+0

没有运气,但我试过相同的,在日食工作台,请找到输出: - ? â™的代码是: - 公共静态无效的主要(字串[] args){ \t \t \t \t串T = “\ u2665”; \t \t String myUnicodeSymbol =“\ u05D0”; \t \t String hollowHeart =“\ u2661”; \t \t String hollowDiamond =“\ u2662”; \t \t String spade =“\ u2660”; \t \t String club =“\ u2663”; \t \t \t \t \t 出的PrintStream; \t \t尝试{ \t \t \t out = new PrintStream(System.out,true,“UTF-8”); \t \t \t out.println(spade); \t \t}赶上(UnsupportedEncodingException E){ \t \t \t \t \t \t e.printStackTrace(); \t \t} – Kiran 2012-02-02 04:26:46