繁体   English   中英

在 Java 中打印 Unicode 字符 - PrintWriter

[英]Printing Unicode Characters in Java - PrintWriter

["

public String toSymbol(Suit suit){
    switch(suit){
        case SPADE:
            return "\u2664";
        case DIAMOND:
            return "\u2662";
        case CLUB:
            return "\u2667";
        case HEART:
            return "\u2661";
        default:
            return "null";
    }
}

字形

正如所评论的,您应该检查您的System.out和控制台是否设置为 UTF-8,并且是否有包含这些字符的字形的字体可用。

您忽略了提及您的操作系统,但我猜它是 Microsoft Windows。 如果是这样,这个问题可能会有所帮助: Java、UTF-8 和 Windows 控制台

我们可以简化您的代码。 Java 源代码支持 UTF-8,因此您可以直接使用实际的西装字符,而不是使用 Unicode 代码点转义。

这是四个法国西装字符,“黑色”和“白色”。

System.out.println( "♠️♥️♣️♦️" ) ; 
System.out.println( "♤♡♧♢" ) ; 

请参阅此代码在 Ideone.com 上成功运行

枚举

顺便说一句,您可以在枚举中嵌入表情符号字符的知识。 如您的问题所示,无需维护这种单独的方法。

enum Suit {
    SPADES( "♠️" , "♤" ), HEARTS( "♥️" , "♡" ), CLUBS( "♣️" , "♧" ), DIAMONDS( "♦️" , "♢" );
    private final String emojiBlack, emojiWhite ;
    Suit( String emojiBlack , String emojiWhite ) {  // Constructor.
        this.emojiBlack = emojiBlack ;
        this.emojiWhite= emojiWhite ;
    }
    String emojiBlack() {  // Accessor (getter).
        return this.emojiBlack ;
    }
    String emojiWhite() {  // Accessor (getter).
        return this.emojiWhite ;
    }
}

用法:

System.out.println(
    Suit.HEARTS.emojiBlack() 
);

♥️

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM