繁体   English   中英

在Java中转换为StringEntity时,如何从字符串中删除编码错误的字符?

[英]How can I remove wrongly encoded characters from a string when converting to a StringEntity in Java?

我正在使用org.apache.http库执行发布请求,但无法正确编码某些字符。 我正在使用jsoup从网页上下拉文本,然后将此文本发送到api。 我的代码看起来像这样

        DefaultHttpClient httpClient = new DefaultHttpClient();
        HttpPost postRequest = new HttpPost(url);

        ObjectMapper mapper = new ObjectMapper();
        String jsonString = mapper.writeValueAsString(object);

        StringEntity input = new StringEntity(jsonString);

        input.setContentType("application/json");
        postRequest.setEntity(input);
        HttpResponse response = httpClient.execute(postRequest);

问题是,有时我从这些网页上获取的文本格式不正确,初始化严格性类时,诸如撇号和连字符之类的普通字符会变成问号或其他怪异的标点符号。 我的问题是如何获取编码错误的jsonString并正确编码,以便在发布请求中将其发送时将字符设置为正确的字符。 我不想删除撇号或连字符,我想将它们设置为类似utf-8的格式。

在StringEntity的构造函数上设置字符集为我解决了这一问题(创建后在StringEntity上设置内容类型没有!):

import org.apache.http.protocol.HTTP;
...
httpPost.setEntity(new StringEntity(jsonString, HTTP.UTF_8));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM