Вопрос

У меня есть строка, которая содержит символ: я не смог ее правильно заменить.

String.replace ("�", "");

Не работает, кто -нибудь знает, как удалить/заменить ï ï½ в строке ??

Это было полезно?

Решение

Это символ замены Unicode, Ufffd. (Информация)

Что -то подобное должно работать:

String strImport = "For some reason my �double quotes� were lost.";
strImport = strImport.replaceAll("\uFFFD", "\"");

Другие советы

Такие проблемы с персонажами трудно диагностировать, потому что информация легко теряется из -за неправильной интерпретации символов с помощью ошибок приложений, неправильной конфигурации, вырезки и т. Д.

Как я (и, очевидно, другие) вижу это, вы вставли три персонажа:

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

Чтобы идентифицировать персонажа, загрузить и запустить программу из эта страница. Анкет Вставьте свой символ в текстовое поле и выберите режим Glyph; Вставьте отчет в свой вопрос. Это поможет людям определить проблемный характер.

Вы просите заменить персонажа «�», но для меня, который проходит как три персонажа 'ï', '¿' и '½'. Это может быть вашей проблемой ... Если вы используете Java до Java 1.5, то вы получаете только символы UCS-2, это только первые 65K UTF-8 символов. Основываясь на других комментариях, скорее всего, персонаж, который вы ищете, является «�», то есть символ смены Unicode. Это символ, который «используется для замены входящего символа, значение которого неизвестно или не представлен в Unicode».

На самом деле, глядя на комментарий Кэти, другой вопрос, который вы можете возникнуть, заключается в том, что Javac не интерпретирует ваш файл .java как UTF-8, предполагая, что вы пишете его в UTF-8. Попробуйте использовать:

javac -encoding UTF-8 xx.java

Или измените свой исходный код:

String.replaceAll("\uFFFD", "");

Как говорили другие, вы опубликовали 3 персонажа вместо одного. Я предлагаю вам запустить этот маленький фрагмент кода, чтобы увидеть, что фактически в вашей строке:

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));
    }
}

Если вы опубликуете результаты этого, будет легче понять, что происходит. (Я не беспокоился о заполнении строки - мы можем сделать это с помощью проверки ...)

Измените кодирование на UTF-8 во время анализа. Это удалит специальные символы

Использовать Последовательность побега Unicode. Анкет Сначала вам придется найти Codepoint для персонажа, которого вы стремитесь заменить (скажем так, это ABCD в шестнадцатеричном):

str = str.replaceAll("\uABCD", "");

для деталей

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;
    }
}

Расширить код URL и ошибку Unicode. Этот символ пришел ко мне и в Google Translate в армянском тексте, а иногда и о сломанных бирманцах.

profilage bas� sur l'analyse de l'esprit (французский язык)

следует перевести как:

profilage basé sur l'analyse de l'esprit

Итак, в этом случае � = é

Нет выше, ответ решить мою проблему. Анкет Когда я загружаю xml it apppends <xml к моему XML. Я просто

xml = parser.getXmlFromUrl(url);

xml = xml.substring(3);// it remove first three character from string,

Теперь он работает точно.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top