Eu tenho uma string que pode conter qualquer caractere Unicode:
ABC
(4º caractere é ESPAÇO)
Eu quero:
U+0041 U+0042 U+0043 U+0020
Como fazer isso?
Eu tenho uma string que pode conter qualquer caractere Unicode:
ABC
(4º caractere é ESPAÇO)
Eu quero:
U+0041 U+0042 U+0043 U+0020
Como fazer isso?
IntStream
de pontos de códigoConforme comentado , você deve trabalhar no fluxo de números inteiros de pontos de código retornados por
String#codePoints
.Defina uma string de formato para a saída desejada com números hexadecimais.
Faça um loop entre esses
int
valores de ponto de código, gerando texto para cada um.Você pode reunir essas saídas com
StringBuilder
.Ou junte tudo isso em uma linha:
Veja este código executado em Ideone.com .
Esteja ciente de que o texto é um assunto complicado.
O que parece ser um caractere para o leitor humano pode, na verdade, ser uma composição de vários pontos de código. Por exemplo, uma carta com um ou mais diacríticos. Outro exemplo é um emoji representando parte do corpo humano em tom de pele natural. Portanto, você pode ter mais pontos de código do que caracteres aparentes.
Para saber mais, procure termos na Wikipedia como ponto de código, grafema, glifo, diacrítico, ligadura.
Em Java, você pode conseguir isso iterando cada caractere da string, convertendo-o em seu ponto de código Unicode usando o método Character.codePointAt() e formatando-o conforme desejado.