题
我有一个包含一个字符的字符串,我无法正确替换它。
string.Replace(“!”,“”);
不起作用,有人知道如何在字符串中删除/替换â½吗?
解决方案
那就是Unicode替换字符 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字符。根据其他注释,您要寻找的角色很可能是'',即Unicode替换字符。这是“用于替换一个在unicode中未知或不说明的传入字符”的字符。
实际上,查看凯西(Kathy)的评论,您可能遇到的另一个问题是,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逃生序列. 。首先,您必须找到要替换的角色的编码点(假设它是十六进制中的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翻译中,用亚美尼亚文字翻译,有时是破碎的缅甸语。
profilage bas� sur l'analyse de l'esprit
(法语)
应翻译为:
profilage basé sur l'analyse de l'esprit
因此,在这种情况下 �
= é
没有上述答案解决我的问题. 。当我下载XML时 <xml
到我的XML。我很简单
xml = parser.getXmlFromUrl(url);
xml = xml.substring(3);// it remove first three character from string,
现在它正在准确运行。