Tengo una cadena que contiene un carácter � No he podido reemplazarla correctamente.Cómo reemplazar ï ¿½ en una cadena
String.replace ("�", "");
no funciona, ¿alguien sabe cómo quitar/reemplazar el � en la cadena?
Tengo una cadena que contiene un carácter � No he podido reemplazarla correctamente.Cómo reemplazar ï ¿½ en una cadena
String.replace ("�", "");
no funciona, ¿alguien sabe cómo quitar/reemplazar el � en la cadena?
Ese es el carácter de reemplazo Unicode, \ uFFFD. (info)
Algo como esto debería funcionar:
String strImport = "For some reason my �double quotes� were lost.";
strImport = strImport.replaceAll("\uFFFD", "\"");
en este caso usted sabe que yo Fueron las comillas dobles pero técnicamente esos caracteres faltantes pueden ser otros caracteres, ¿correcto? –
@Elzo: Sí. Mirando mi hilo, los dos personajes eran probablemente "y" para empezar, pero podrían haber sido cualquier cantidad de otras cosas. – Gunslinger47
también solucioné esto abriendo el db en textwrangler y haciendo un buscar y reemplazar –
Usted está pidiendo reemplazar 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 puede tener es que javac no está interpretando su archivo .java como UTF-8, suponiendo que lo está escribiendo en UTF-8. Trate de usar:
javac -encoding UTF-8 xx.java
O, modificar el código fuente para hacerlo:
String.replaceAll("\uFFFD", "");
� se ve como 1 char – Thys
Para usted puede ser visto como un personaje, el resto de nosotros no tenemos tanta suerte ;-) Por favor, díganos el código del personaje que está tratando de reemplazar. –
Como han dicho otros, se registraron 3 caracteres en lugar de uno. Sugiero ejecutar este pequeño fragmento de código para ver qué hay en realidad en su 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));
}
}
En caso de publicar los resultados de eso, será más fácil de averiguar lo que está pasando. (No me he molestado en rellenar la cuerda; podemos hacerlo mediante inspección ...)
Utilice unicode escape sequence. Primero usted tiene que encontrar el punto de código del carácter que pretende sustituir (simplemente digamos que es ABCD en hexadecimal):
str = str.replaceAll("\uABCD", "");
cuestiones personaje como este son difíciles de diagnosticar debido a que la información se pierde fácilmente a través de la mala interpretación de personajes a través de los errores de aplicación, una mala configuración, Cortar y pegar, etc.
Como yo (y al parecer otros) lo veo, ha pegado tres personajes:
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 carácter, descarga y ejecutar el programa desde this page. 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.
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;
}
}
Sin respuesta anterior resolver mi problema. Cuando descargo xml, aplica <xml
a mi xml.Simplemente
xml = parser.getXmlFromUrl(url);
xml = xml.substring(3);// it remove first three character from string,
ahora se está ejecutando con precisión.
cambiar la codificación UTF-8 al analizar .Esta eliminará los caracteres especiales
diseccionar el código URL y error Unicode. este símbolo vino a mí también en Google translate en el texto armenio y, a veces, el birmano roto.
¿Cuál es el/los punto (s) de código Unicode para lo que quiere reemplazar? –
Según la respuesta de Gunslinger47, el personaje que MrThys quiere reemplazar es casi con certeza " ", ya que tiene la secuencia UTF-8 de 0xEF 0xBF 0xBD, que es la secuencia que McDowell nos dio –
Para cualquiera que haya tropezado sobre esto, y no entiende por qué los caracteres '" �' se producen durante el procesamiento, hay un informe (** descargo de responsabilidad: ** Lo escribí) que explica por qué sucede, en [esta pregunta de StackOverflow] (http://stackoverflow.com/questions/6366912/reading-file-from-windows-and-linux-yields-different-results-character-encoding/6367675#6367675). –