如何更换�一个字符串(How to replace � in a string)

2019-07-19 22:26发布

我有一个包含字符�我一直没能正确地替换它的字符串。

与string.replace( “�”, “”);

不工作,没有人知道如何删除/替换字符串中的�?

Answer 1:

这是Unicode替换字符\ uFFFD。 ( 信息 )

像这样的东西应该工作:

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


Answer 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

要识别的字符,下载并运行从程序此页面 。 你的性格粘贴到文本字段,然后选择字形模式; 粘贴报告到你的问题。 它会帮助人们找出存在问题的字符。



Answer 3:

你问到替换字符“”但对我来说这是未来通过为三个字符“I”,“¿”和“半”。 如果您使用的是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", "");


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

如果您发布的,结果,它会更容易找出发生了什么事情。 (我没有打扰填充字符串 - 我们可以通过检查做...)



Answer 5:

使用Unicode转义序列 。 首先,你必须找到你寻求替换字符的代码点(我们只能说,这是ABCD十六进制):

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


Answer 6:

查看详细

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


Answer 7:

该编码更改为UTF-8,而解析。这将去除特殊字符



Answer 8:

剖析URL编码和Unicode错误。 这个符号来找我,以及对谷歌翻译在亚美尼亚文,有时破碎的缅甸。



Answer 9:

没有上面的回答解决我的问题 。 当我下载的XML它apppends <xml我的XML。 我只是

xml = parser.getXmlFromUrl(url);

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

现在它在正确运行。



文章来源: How to replace � in a string