문자열에서 �을 교체하는 방법
문제
문자가 포함 된 문자열이 있습니다. �를 올바르게 교체 할 수 없었습니다.
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,
이제 정확하게 실행 중입니다.