我有一个包含UTF-8字符集格式的字符串。
String str = "100µF";
上述字符串的期望输出为"100µF"
我在 StackOverflow 上查找并获得以下代码
public static String decompose(String s) {
return java.text.Normalizer.normalize(s, java.text.Normalizer.Form.NFD).replaceAll("\\p{InCombiningDiacriticalMarks}+","");
}
但是,我得到的上述字符串的输出是“100AµF”。
"100µF"
是"100µF"
的UTF-8编码形式。Java字符串是UTF-16编码的。如果您使用8位字符集不是UTF-8,错误地将UTF-8数据转换为UTF-16,则会在String
中得到"100µF"
。不要这样做!而且不要尝试修复"100µF"
后转换为"100µF"
(或任何其他类似损坏的字符串)。除非您能够确定使用了错误的字符集来破坏数据,否则猜测不会100%有效。您需要修复导致您首先获得错误的"100µF"
的逻辑错误。 - Remy Lebeau