Quiero mostrar un carácter Unicode en Java. Si hago esto, funciona bien:
String symbol = "\u2202";
símbolo es igual a "∂". Eso es lo que quiero.
El problema es que conozco el número Unicode y necesito crear el símbolo Unicode a partir de eso. Probé (para mí) lo obvio:
int c = 2202;
String symbol = "\\u" + c;
Sin embargo, en este caso, el símbolo es igual a "\ u2202". Eso no es lo que quiero.
¿Cómo puedo construir el símbolo si conozco su número Unicode (pero solo en tiempo de ejecución --- no puedo codificarlo como en el primer ejemplo)?
Respuestas:
Solo envía tu
int
achar
. Puedes convertir eso en unString
usoCharacter.toString()
:EDITAR:
Solo recuerde que las secuencias de escape en el código fuente de Java (los
\u
bits) están en HEX, por lo que si está tratando de reproducir una secuencia de escape, necesitará algo comoint c = 0x2202
.fuente
c
es menor que 0x10000, o de lo contrario, este enfoque se romperá horriblemente.Java chars go up to 0xFFFF
. No sabía eso.Si desea obtener una unidad de código codificado en UTF-16 como unidad
char
, puede analizar el entero y convertirlo como han sugerido otros.Si desea admitir todos los puntos de código, use
Character.toChars(int)
. Esto manejará los casos en los que los puntos de código no caben en un solochar
valor.Doc dice:
fuente
char
.scala> "👨🎨".map(_.toInt).flatMap((i: Int) => Character.toChars(i)).map(_.toHexString)
dares11: scala.collection.immutable.IndexedSeq[String] = Vector(f468, 200d, f3a8)
Este emoji, "cantante masculino", se aborda con los tres puntos de códigoU+1f468
,U+200d
yU+1f3a8
. Falta el dígito más significativo. Puedo agregarlo con un OR bit a bit ( stackoverflow.com/a/2220476/1007926 ), pero no sé cómo determinar qué caracteres analizados se han truncado. ¡Gracias!Las otras respuestas aquí solo admiten unicode hasta U + FFFF (las respuestas se refieren a una sola instancia de char) o no dicen cómo llegar al símbolo real (las respuestas se detienen en Character.toChars () o usan un método incorrecto después de eso), por lo que también agrego mi respuesta aquí.
Para admitir también puntos de código suplementarios, esto es lo que se debe hacer:
También hice una prueba rápida sobre qué métodos de conversión funcionan y cuáles no
fuente
new String(Character.toChars(121849));
se rompe en la consola de Eclipse, pero la versión de tres líneas funciona.str4
tarea, ¿no deberíacode
sercodePoint
en su lugar?Recuerde que
char
es un tipo integral y, por lo tanto, se le puede dar un valor entero, así como una constante char.fuente
int
que estabas buscando. Estaba buscando 0x2202. Mi culpa. En cualquier caso, si tiene elint
punto de código que está buscando, puede simplemente convertirlo en achar
, y usarlo (para construir aString
si lo desea).Este funcionó bien para mí.
Ahora text2 tendrá ∂.
fuente
fuente
Así es como lo haces:
Esta solución es de Arne Vajhøj.
fuente
int c = 2202
, ¡lo cual está mal! Una solución mejor que esta es simple de decirint c = 0x2202
que le ahorrará pasar por una cadena, etc.char ccc...
línea media . Solo useint cc = 0x2202;
y luegofinal String text=String.valueOf(cc);
Aunque esta es una pregunta antigua, hay una forma muy fácil de hacer esto en Java 11 que se lanzó hoy: puede usar una nueva sobrecarga de Character.toString () :
Dado que este método admite cualquier punto de código Unicode, la longitud de la cadena devuelta no es necesariamente 1.
El código necesario para el ejemplo dado en la pregunta es simplemente:
Este enfoque ofrece varias ventajas:
char
.char[]
, que suele ser lo que desea. La respuesta publicada por McDowell es apropiada si desea que el punto de código se devuelva comochar[]
.fuente
int codePoint = 0x2202;
Entonces:String s = Character.toString(codePoint); // <<< Requires JDK 11 !!!
O en una sola línea:System.out.println(Character.toString(0x2202)); // Prints ∂
Espero que esto ayude a alguien más a usar esta función de JDK 11.El siguiente código escribirá los 4 caracteres Unicode (representados por decimales) para la palabra "be" en japonés. Sí, el verbo "ser" en japonés tiene 4 caracteres. El valor de los caracteres está en decimal y se ha leído en una matriz de String [], utilizando split, por ejemplo. Si tienes Octal o Hex, parseInt también toma una base.
fuente
Aquí hay un bloque para imprimir caracteres Unicode entre
\u00c0
para\u00ff
:fuente
Desafortunadamente, eliminar una reacción violenta como se menciona en el primer comentario (newbiedoodle) no conduce a un buen resultado. La mayoría (si no todos) de IDE emite errores de sintaxis. La razón es que el formato Unicode de escape de Java espera la sintaxis "\ uXXXX", donde XXXX son 4 dígitos hexadecimales, que son obligatorios. Los intentos de doblar esta cuerda a partir de piezas fallan. Por supuesto, "\ u" no es lo mismo que "\\ u". La primera sintaxis significa 'u' de escape, la segunda significa una reacción de escape (que es una reacción) seguida de una 'u'. Es extraño, que en las páginas de Apache se presente la utilidad, que hace exactamente este comportamiento. Pero en realidad, es una utilidad de imitación de Escape. . Apache tiene algunas utilidades propias (no las probé), que hacen este trabajo por usted. Puede ser, todavía no es eso, lo que quieres tener. 1Pero esta utilidad tiene un buen enfoque para la solución. Con la combinación descrita anteriormente (MeraNaamJoker). Mi solución es crear esta cadena de mímica de escape y luego convertirla de nuevo a Unicode (para evitar la restricción real de Unicode de escape). Lo usé para copiar texto, por lo que es posible que en el método uencode sea mejor usar '\\ u' excepto '\\\\ u'. Intentalo.
fuente
char c = (char) 0x2202; Cadena s = "" + c;
fuente
(LA RESPUESTA ESTÁ EN DOT NET 4.5 y en java, debe existir un enfoque similar)
Soy de Bengala Occidental en INDIA. Según tengo entendido, su problema es ... Quiere producir similar a 'অ' (es una letra en idioma bengalí) que tiene Unicode HEX:
0X0985
.Ahora bien, si conoce este valor con respecto a su idioma, ¿cómo producirá ese símbolo Unicode específico del idioma, verdad?
En Dot Net es tan simple como esto:
Ahora x es tu respuesta. Pero esto es HEX por HEX convertir y la conversión de oración a oración es un trabajo para los investigadores: P
fuente