当前位置: 首页 > 面试题库 >

Java UTF-8编码不起作用HttpURLConnection

邢小云
2023-03-14
问题内容

我尝试进行后期呼叫并使用此值传递输入-“ä€爱لآहที่”,我收到了错误消息

{"error":{"code":"","message":{"lang":"en-US","value":{"type":"ODataInputError","message":"Bad Input: Invalid JSON format"}}}}

这是我的代码

    conn.setRequestMethod(ConnectionMethod.POST.toString());
    conn.setRequestProperty(CONTENT_LENGTH, Integer.toString(content.getBytes().length));
    conn.setRequestProperty("Accept-Charset", "UTF-8"); 
    conn.setUseCaches(false);
    conn.setDoInput(true);
    conn.setDoOutput(true);
    DataOutputStream wr = new DataOutputStream(conn.getOutputStream());
    wr.writeBytes(content);
    wr.flush();
    wr.close();
    InputStream resultContentIS;
    String resultContent;
    try {
        resultContentIS = conn.getInputStream();

        BufferedReader reader = new BufferedReader(new InputStreamReader(resultContentIS));
        StringBuilder sb = new StringBuilder();
        String line;
        while ((line = reader.readLine()) != null) {
            sb.append(line);
        }

它在conn.getInputStream()上失败了;

内容的价值是

{ "input" : "ä€愛لآहที่" }

在输入为字符串或整数的情况下工作

当我添加语句

   conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded; charset=utf-8");

我收到了不同的消息

 {"error":{"code":"","message":{"lang":"en-US","value":{"type":"Error","message":"Internal server error"}}}}

问题答案:

请尝试以下代码:

DataOutputStream wr = new DataOutputStream(conn.getOutputStream());
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(wr, "UTF-8"));
writer.write(content);
writer.close();
wr.close();

您应该使用JSONObject传递参数

输入,请尝试

BufferedReader reader = new BufferedReader(new InputStreamReader(resultContentIS, "UTF-8"));

如果输出是:???????,那么不用担心,因为您的输出控制台不支持UTF-8



 类似资料:
  • 问题内容: 我正在将项目从Ant转换为Maven,并且在处理UTF-8字符的特定单元测试中遇到问题。问题与以下字符串有关: 问题是单元测试失败,因为字符串的读取方式如下: java类另存为UTF-8,并且我还在pom.xml中将构建编码指定为UTF-8。 这是我的 pom.xml 的摘录: 我在这里想念什么吗?如果有人可以在这里帮助我,那就太好了。 更新资料 关于测试代码: 以下逻辑不是真正相关的

  • 我有这样一个csv文件 我在读书

  • 问题内容: 最近,我更改了一些要通过ajax显示的页面,但对于为什么utf8编码现在在框内显示一个问号却不知道,我有些困惑。 举个例子。最初的页面是index.php。charset已显式设置为utf8,位于中。然后我用php查询数据库 这是原始的index.php页面: 但是,当我进行更改以添加通过ajax填充“ main_container”的菜单时,所有utf8编码均停止工作。这是新的代码:

  • 问题内容: 我一直在尝试处理将发布到nodeJS(和express框架)的图像保存到数据库中,并且遇到了一些麻烦。忽略所有的Web处理,我认为我已经将问题缩小到节点中base64编码发生的方式。我认为下面简化的示例应该可以工作,但是输出图像始终会损坏。 示例(1)在图像中加载(2)保存if()的副本,以确认节点可以正确读取文件。这始终有效。(3)拍摄图像,并对其内容进行base64编码,(4)然后

  • 问题内容: 由于某种原因,似乎响应JS无法正常工作。我正在IE 8中使用媒体查询来更改各种大小的监视器的背景图像。在IE 8中,没有背景,只有纯色。 代码如下: 媒体查询如下所示: 上面的代码在IE 8中无法工作是有原因的吗?我还应该尝试使用另一个JS来使IE 8 Media Queries工作吗? 注意:看来html5-shiv确实有效。我正在实时Web服务器上进行测试。 问题答案: 同样的问题

  • 问题内容: 我有协议: 我有数据: 在我有: 然后我有所需的方法: 我还是 类型的viewcontroller不符合协议UIPickerViewDataSource 问题答案: 像这样在Swift 3中更改了方法,这就是您收到此错误的原因。 欲了解更多详细阅读苹果文档上。 注意: 您还需要添加的第一个参数标签同样喜欢你的其他方法方法是和。