Java 将奇怪的字符串转换为缅甸语字符串

标签 java utf-8 fonts utf

嗨,我的示例代码如下;

String ln="á€á€­á€•á€¹á€•á€¶á€”ဲ့";
    try {
        byte[] b = ln.getBytes("UTF-8");
        String s = new String(b, "US-ASCII");
        System.out.println(s);
    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    }

当我运行它时,它不打印 Brumese,有解决办法吗?谢谢

最佳答案

真正的问题是服务器发送回的内容要么使用错误的字符集,要么使用双重编码。如果可能的话,您应该解决这个问题。

与此同时,您的想法是正确的 - 将错误编码的文本转换为正确的字符集。

字符串中的每个字符显然应该是一个单字节,它是 UTF-8 字节序列的一部分。您实际上看到的是这些单个字节中的每一个都被视为 Windows cp1252 中的字符。 charset,并相应地转换为 Java char。

因此,您首先要将字符从 cp1252 转换回正确的字节:

byte[] b = ln.getBytes("cp1252");

现在您有了一个真正的 UTF-8 字节序列,您可以将其转换为正确的字符串:

String s = new String(b, StandardCharsets.UTF_8);
// In Java 6, you must use:
//String s = new String(b, "UTF-8");

如果您正在解码或尝试生成缅甸语字符或任何非英语字符,则切勿使用 US-ASCII。 ASCII 仅包含代码点 0 到 127。

关于Java 将奇怪的字符串转换为缅甸语字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31162549/

相关文章:

java - 数组中可以有重复项吗?

mysql - 错误的字符串值 : '\xF0\x9F\x8E\xB6\xF0\x9F...' MySQL

jQuery:将 json 响应的编码设置为 utf8

java - Flying Saucer iTextPDF 中文字体

java - @Autowired私有(private)JdbcTemplate jdbcTemplate;说应用程序上下文中的一些bean的依赖关系形成了一个循环:

java - Wiremock 和 XPath 属性测试

java - Datanode + VM初始化期间发生错误 初始堆太小

javascript - 为什么我的 mod_perl 应用程序中的 UTF8 数据在 Web 浏览器中仍然出现乱码?

javascript - 无法更新自定义字体

python - Matplotlib 在我的 Linux 机器上找不到安装的字体