문제

문자가 포함 된 문자열이 있습니다. �를 올바르게 교체 할 수 없었습니다.

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

작동하지 않습니다. 누구든지 문자열의 �을 제거/교체하는 방법을 알고 있습니까 ??

도움이 되었습니까?

해결책

그것이 유니 코드 교체 문자 ufffd입니다. (정보)

이와 같은 것이 효과가 있어야합니다.

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

다른 팁

이와 같은 문자 문제는 응용 프로그램 버그, 잘못된 구성, 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

캐릭터를 식별하려면 프로그램을 다운로드하여 실행합니다. 이 페이지. 문자를 텍스트 필드에 붙여 넣고 글리프 모드를 선택하십시오. 보고서를 질문에 붙여 넣으십시오. 사람들이 문제가있는 성격을 식별하는 데 도움이 될 것입니다.

당신은 캐릭터 "�"를 대체 할 것을 요구하고 있지만, 나에게는 세 가지 캐릭터 'ï', '¿'및 '½'로오고 있습니다. 이것은 당신의 문제 일 수 있습니다 ... Java 1.5 이전에 Java를 사용하는 경우 UCS-2 문자 만받습니다. 즉, 첫 65K UTF-8 문자입니다. 다른 의견을 바탕으로, 당신이 찾고있는 캐릭터는 '�', 즉 유니 코드 대체 문자 일 가능성이 높습니다. 이것은 "유니 코드에서 값이 알려지지 않았거나 대표 할 수없는 수신 캐릭터를 대체하는 데 사용되는 캐릭터입니다.

실제로, Kathy의 의견을 살펴보면, 당신이 가질 수있는 다른 문제는 Javac이 UTF-8에 작성한다고 가정 할 때 Java 파일을 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로 변경합니다. 이것은 특수 문자를 제거합니다.

사용 유니 코드 이스케이프 시퀀스. 먼저 교체하려는 캐릭터에 대한 코드 포인트를 찾아야합니다 (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 코드 및 유니 코드 오류를 해부합니다. 이 상징은 아르메니아어 텍스트와 때로는 깨진 버마인으로 Google 번역에서 나에게도 나에게왔다.

profilage bas� sur l'analyse de l'esprit (프랑스 국민)

다음으로 번역해야합니다.

profilage basé sur l'analyse de l'esprit

이 경우 � = é

위의 답변은 내 문제를 해결하지 못했습니다. XML을 다운로드하면 Apppends <xml 내 XML에. 나는 단순히

xml = parser.getXmlFromUrl(url);

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

이제 정확하게 실행 중입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top