【问题标题】:Encoding/Content-Type issue with Danish letters "æ"丹麦字母“æ”的编码/内容类型问题
【发布时间】:2017-12-30 21:11:56
【问题描述】:

我在对 HTTP REST 响应中的丹麦字母进行编码时遇到问题。

当我调用 REST 服务时,我得到“bev�ge”,它必须是“bevæge”,Chrome 浏览器对其进行编码并给我预期的字母为“bevæge”,但是当我阅读来自 Java API 的响应时,我我越来越“bev�ge”了,有人能帮我解决这个问题吗,会很感激的,

提前致谢

【问题讨论】:

  • 如果您没有在问题中包含代码,那么很难看出您的代码有什么问题。

标签: java http character-encoding httpresponse content-type


【解决方案1】:

您的编码似乎不匹配

考虑

    String str = "bevæge";

    byte[] b = str.getBytes();

    try {
        System.out.println(new String (b, "US-ASCII"));
        System.out.println(new String (b, "UTF8"));
    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    }

输出将是

bev��ge
bevæge

【讨论】:

    【解决方案2】:

    看起来,如果字符串作为 ISO8859-1 传输

    试试下面::

    String str = "bevæge";
    
    byte[] b = str.getBytes();
    
    try {
        System.out.println(new String (b, "ISO8859-1"));
    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    }
    

    会输出

    bevæge

    【讨论】:

      【解决方案3】:

      在您的 HttpClient 中,尝试添加以下标头: 接受字符集:UTF-8

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-04-19
        • 1970-01-01
        • 2016-03-12
        • 1970-01-01
        • 2021-04-12
        • 2021-09-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多