我需要针对某些基线验证某些文字。
例如:
String a="La Panthère";
String b="La Panthère";
我知道字符串b
包含HTML文字,所以我使用Apache StringEscapeUtils
给了我
String b="La Panthère";
b=StringEscapeUtils.unescapeHtml(b);
输出: - LaPanthère
但是我不知道字符串中存储的是什么。在某处,我知道这可能是上升文字,因此尝试下面的代码
a=Normalizer.normalize(a, Normalizer.Form.NFKD);
注意:我尝试了所有形式的Normalizer但没有任何效果。
有人可以帮我解决如何以与b
相同的方式制作字符串吗?
答案 0 :(得分:2)
如Jesper所述,è
模式通常表示编码错误。
那时,你已经不幸了。
替换è
等补救措施不可取,也不安全。
转义或规范化String
超出了范围,因为您的问题源于源代码,与HTML转换或重音规范化无关。
但是,有一些简单的习惯用法可以将String
转换为不同的编码。
以下示例:
String
(在UTF-8环境中)。 String
)。 最后,它打印出它重新转换为UTF-8。
String a = new String(
"La Panthère".getBytes(Charset.forName("UTF-8")),
Charset.forName("Cp1252")
);
System.out.println(a);
System.out.println(
new String(
a.getBytes(Charset.forName("Cp1252")),
Charset.forName("UTF-8")
)
);
<强>输出强>
La Panthère
La Panthère
备注强>
上述转换习惯用法意味着您事先知道原始String
是如何编码的。
当使用以下编码来解释彼此之间的文本时,会发生典型的编码问题:
Here列出了Java支持的编码及其规范名称。
在网络环境中,您通常会调用Javascript的encodeURIComponent函数在前端编码您的值,然后再将其发送到后端。