gpt4 book ai didi

java - java中UTF-8到ASCII的转换

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:00:57 25 4
gpt4 key购买 nike

我有一个包含 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”

最佳答案

这是一个 XY problem .

这里的问题是您的字符串是从字节创建的,使用了一个不正确的字符集,该字符集假设一个字节是一个字符,例如ISO 8559-1。 .

但字节不是 ASCII,也不是 ISO 8859-1。字节是文本的 UTF-8 表示。

不要替换任何字符。不要规范化字符串。唯一正确的解决方案是将错误解码的字符串还原为字节,然后使用 UTF-8 正确解码字节:

byte[] originalBytes = str.getBytes(StandardCharsets.ISO_8859_1);

str = new String(originalBytes, StandardCharsets.UTF_8);

关于java - java中UTF-8到ASCII的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53501308/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com