java - fffd - ã i
Cómo reemplazar � en una cadena (9)
Tengo un hilo que contiene un carácter I No he podido reemplazarlo correctamente.
String.replace ("�", "");
no funciona, ¿alguien sabe cómo quitar / reemplazar el � en la cadena?
Cambie la codificación a UTF-8 durante el análisis. Esto eliminará los caracteres especiales
Como han dicho otros, publicaste 3 caracteres en lugar de uno. Te sugiero que corras este pequeño fragmento de código para ver qué hay realmente en tu cadena:
public static void dumpString(String text)
{
for (int i=0; i < text.length(); i++)
{
System.out.println("U+" + Integer.toString(text.charAt(i), 16)
+ " " + text.charAt(i));
}
}
Si publica los resultados de eso, será más fácil averiguar qué está pasando. (No me molesté en rellenar la cuerda, podemos hacer eso por inspección ...)
Ese es el carácter de reemplazo de Unicode, / uFFFD. ( información )
Algo como esto debería funcionar:
String strImport = "For some reason my �double quotes� were lost.";
strImport = strImport.replaceAll("/uFFFD", "/"");
Los problemas de carácter como este son difíciles de diagnosticar porque la información se pierde fácilmente a través de la interpretación errónea de los caracteres a través de errores de aplicación, configuración incorrecta, corte de pasta, etc.
Como yo (y aparentemente otros) lo veo, has pegado tres caracteres:
codepoint glyph escaped windows-1252 info
=======================================================================
U+00ef ï /u00ef ef, LATIN_1_SUPPLEMENT, LOWERCASE_LETTER
U+00bf ¿ /u00bf bf, LATIN_1_SUPPLEMENT, OTHER_PUNCTUATION
U+00bd ½ /u00bd bd, LATIN_1_SUPPLEMENT, OTHER_NUMBER
Para identificar el personaje, descarga y ejecuta el programa desde esta página . Pega tu personaje en el campo de texto y selecciona el modo de glifo; pegue el informe en su pregunta. Ayudará a las personas a identificar el personaje problemático.
Usa la secuencia de escape Unicode . Primero tendrá que encontrar el punto de código para el personaje que busca reemplazar (digamos que es ABCD en hex):
str = str.replaceAll("/uABCD", "");
Usted está pidiendo que reemplace el carácter " ", pero para mí viene con tres caracteres "ï", "¿" y "½". Este podría ser su problema ... Si usa Java antes que Java 1.5, solo obtendrá los caracteres UCS-2, que son solo los primeros 65K caracteres UTF-8. Según otros comentarios, lo más probable es que el personaje que está buscando sea '' '', que es el personaje de reemplazo Unicode. Este es el carácter que se "usa para reemplazar un carácter entrante cuyo valor es desconocido o no se puede representar en Unicode".
En realidad, mirando el comentario de Kathy, el otro problema que podrías tener es que javac no está interpretando tu archivo .java como UTF-8, suponiendo que lo estás escribiendo en UTF-8. Intenta usar:
javac -encoding UTF-8 xx.java
O bien, modifique su código fuente para hacer:
String.replaceAll("/uFFFD", "");
import java.io.UnsupportedEncodingException;
/**
* File: BOM.java
*
* check if the bom character is present in the given string print the string
* after skipping the utf-8 bom characters print the string as utf-8 string on a
* utf-8 console
*/
public class BOM
{
private final static String BOM_STRING = "Hello World";
private final static String ISO_ENCODING = "ISO-8859-1";
private final static String UTF8_ENCODING = "UTF-8";
private final static int UTF8_BOM_LENGTH = 3;
public static void main(String[] args) throws UnsupportedEncodingException {
final byte[] bytes = BOM_STRING.getBytes(ISO_ENCODING);
if (isUTF8(bytes)) {
printSkippedBomString(bytes);
printUTF8String(bytes);
}
}
private static void printSkippedBomString(final byte[] bytes) throws UnsupportedEncodingException {
int length = bytes.length - UTF8_BOM_LENGTH;
byte[] barray = new byte[length];
System.arraycopy(bytes, UTF8_BOM_LENGTH, barray, 0, barray.length);
System.out.println(new String(barray, ISO_ENCODING));
}
private static void printUTF8String(final byte[] bytes) throws UnsupportedEncodingException {
System.out.println(new String(bytes, UTF8_ENCODING));
}
private static boolean isUTF8(byte[] bytes) {
if ((bytes[0] & 0xFF) == 0xEF &&
(bytes[1] & 0xFF) == 0xBB &&
(bytes[2] & 0xFF) == 0xBF) {
return true;
}
return false;
}
}
Ninguna de las respuestas anteriores resuelve mi problema . Cuando descargo xml, aprueba <xml
a mi xml. Yo simplemente
xml = parser.getXmlFromUrl(url);
xml = xml.substring(3);// it remove first three character from string,
ahora se está ejecutando con precisión.
diseccionar el código URL y el error Unicode. este símbolo vino a mí también en Google translate en el texto armenio y, a veces, el birmano roto.