Convierte cadenas internacionales a códigos \ u en java

¿Cómo puedo convertir un String internacional (por ejemplo, ruso) en números (números Unicode)?
por ejemplo, \u041e\u041a para OK ?

En caso de que necesite esto para escribir un archivo .properties , puede simplemente agregar las cadenas en un objeto Propiedades y luego guardarlo en un archivo. Cuidará la conversión.

hay una herramienta JDK ejecutada a través de la línea de comandos de la siguiente manera:

 native2ascii -encoding utf8 src.txt output.txt 

Ejemplo:

src.txt

 بسم الله الرحمن الرحيم 

salida.txt

 \u0628\u0633\u0645 \u0627\u0644\u0644\u0647 \u0627\u0644\u0631\u062d\u0645\u0646 \u0627\u0644\u0631\u062d\u064a\u0645 

Si desea usarlo en su aplicación Java, puede envolver esta línea de comando de la siguiente manera:

 String pathSrc = "./tmp/src.txt"; String pathOut = "./tmp/output.txt"; String cmdLine = "native2ascii -encoding utf8 " + new File(pathSrc).getAbsolutePath() + " " + new File(pathOut).getAbsolutePath(); Runtime.getRuntime().exec(cmdLine); System.out.println("THE END"); 

Luego lea el contenido del nuevo archivo.

Puede usar escapeJavaStyleString de org.apache.commons.lang.StringEscapeUtils .

Yo también tuve este problema. Tenía algunos textos en portugués con algunos caracteres especiales, pero estos personajes ya estaban en formato unicode (por ejemplo: \u00e3 ).

Entonces quiero convertir S\u00e3o en São .

Lo hice usando el Apache commons StringEscapeUtils . Como dijo @ sorin-sbarnea. Se puede descargar aquí

Usa el método unescapeJava , así:

 String text = "S\u00e3o" text = StringEscapeUtils.unescapeJava(text); System.out.println("text " + text); 

(También está el método escapeJava , pero este pone los caracteres Unicode en la cadena).

Si alguien conoce una solución en Java puro, por favor díganos.

Aquí hay una versión mejorada de la respuesta de ArtB :

  StringBuilder b = new StringBuilder(); for (char c : input.toCharArray()) { if (c >= 128) b.append("\\u").append(String.format("%04X", (int) c)); else b.append(c); } return b.toString(); 

Esta versión escapa a todos los caracteres no ASCII y funciona correctamente para puntos de código Unicode bajo como Ä .