Подтвердить что ты не робот

Как заменить � в строке

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

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

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

4b9b3361

Ответ 1

Это символ замены Unicode,\uFFFD. (info)

Что-то вроде этого должно работать:

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

Ответ 2

Подобные проблемы с героями трудно диагностировать, поскольку информация легко теряется из-за неверного истолкования символов с помощью ошибок приложений, неправильной конфигурации, cut'n'paste и т.д.

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

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

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

Ответ 3

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

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

javac -encoding UTF-8 xx.java

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

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

Ответ 4

Как говорили другие, вы отправили 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));
    }
}

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

Ответ 5

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

Ответ 6

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

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

Ответ 7

для деталей

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

Ответ 8

проанализировать код URL и unicode-ошибку. этот символ пришел ко мне, а также в google перевести в армянском тексте, а иногда и сломанную бирманку.

Ответ 9

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

должен быть переведен как:

profilage basé sur l'analyse de l'esprit

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

Ответ 10

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

xml = parser.getXmlFromUrl(url);

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

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