web-dev-qa-db-fra.com

Comment écrire un symbole croix unicode en Java?

J'essaie d'écrire ce symbole croix unicode ( ???? ) en Java:

class A {
    public static void main(String[] args) {
        System.out.println("\u2300");
        System.out.println("\u10035");
    }
}

Je peux écrire o avec une ligne ( ) très bien, mais le symbole de la croix n'apparaît pas, au lieu de cela, il affiche simplement le nombre 5:

# javac A.Java && Java A
⌀
ဃ5

Pourquoi?

26
Dog

Vous recherchez U + 10035, qui est en dehors du Plan multilingue de base . Cela signifie que vous ne pouvez pas utiliser \u pour spécifier la valeur, car cela ne concerne que U + 0000 à U + FFFF - il y a toujours exactement quatre chiffres hexadécimaux après \u. Donc, actuellement, vous avez U + 1003 ( "MYANMAR LETTER GHA" ) suivi de '5'.

Malheureusement Java ne fournit pas de forme littérale de chaîne qui rend les caractères en dehors de BMP simples à exprimer. La seule façon de l'inclure dans un littéral (mais quand même en ASCII) consiste à utiliser la forme de substitution UTF-16 :

String cross = "\ud800\udc35";

Vous pouvez également utiliser la forme de point de code 32 bits comme int:

String cross = new String(new int[] { 0x10035 }, 0, 1);

(Ces deux chaînes sont égales.)

Cela dit, votre console devra toujours prendre en charge ce personnage - vous devrez l'essayer pour savoir si oui ou non.

49
Jon Skeet

Je crois que Java représente les caractères Unicode de 0x0000 à 0xFFFF. Java évaluerait "\u10035" à quoi que ce soit "\u1003" est et un 5 après cela.

3
joshreesjones

0x10035 est un caractère Unicode supplémentaire. Vous aurez besoin d'une police qui le prend en charge si vous voulez que votre programme le rende.

http://www.Oracle.com/technetwork/articles/javase/supplementary-142654.html

1
Tap

Les échappements Unicode comportent 4 caractères. Vous imprimez\u1003 suivi de '5'. Êtes-vous sûr d'avoir le bon point de code?

0
Aurand