首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >java文本编码问题

java文本编码问题
EN

Stack Overflow用户
提问于 2013-03-20 04:37:41
回答 1查看 14.9K关注 0票数 2

在我的应用程序中,我用JSON格式从一个名为(GSA)的外部工具中检索搜索结果。

GSA的JSON结果非常大,因此我更愿意将GSA结果修改为更适合在我的网页上显示的内容。

如果我直接显示GSA结果而没有在java代码中格式化它,我就不会在我的网页上遇到任何编码问题。

但是,如果我在servlet java代码中将大型GSA结果格式化为合适的JSON格式,我将面临编码问题。示例- “All Access Pass”被显示为ÂAll Access PassÂ

我使用以下代码将修改后的json从servlet返回到网页-

代码语言:javascript
复制
response.setContentType("application/json;charset=UTF-8");

我试图将字符集更改为iso-8859-1,但没有任何区别。

我用以下方式编辑我的原始JSON -

代码语言:javascript
复制
        String responseText = getMethod.getResponseBodyAsString();

        JSONObject resultJSON = new JSONObject();
                try {

                    JSONObject jsonObj = new JSONObject(responseText);

                    JSONArray resultJsonArray = jsonObj
                            .getJSONArray("RES");

                    JSONObject searchResultJSON = null;

                    for (int iCnt = 0; iCnt < resultJsonArray.length(); iCnt++) {

                        searchResultJSON = new JSONObject();

                        JSONObject obj = resultJsonArray.getJSONObject(iCnt);
                        JSONObject metaTagObj = obj
                                .getJSONObject("MT");

                        if (metaTagObj.has(("title"))) {
                         searchResultJSON.put("title",metaTagObj.get("title").toString());
                        }
             resultJSON.accumulate("RES", searchResultJSON);
    }
   response.setContentType("application/json;charset=UTF-8"); 
   response.getWriter().print(resultJSON);

    }catch(JSONException e){}

我要介绍的对原始JSON的修改可以在JavaScript中完成,这将解决我的问题,但这是我不想做的事情。

  1. 有没有办法找出原始GSA中文本的编码格式?
  2. 如何避免java代码更改原始GSA中的文本编码?

请帮助我理解这里发生了什么,以及我如何避免这个问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-15 06:07:20

出现文本编码问题是因为使用Apache客户端对GSA服务器进行的调用使用默认内容编码字符集iso-8859-1,但是GSA服务器希望happening请求和响应采用UTF-8编码。

在为HTTPClient设置编码后,这个问题得到了解决-

代码语言:javascript
复制
HttpClient httpClient = new HttpClient();
httpClient.getParams().setContentCharset("UTF-8");

的servlet响应编码

response.setContentType("application/json;charset=UTF-8");

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15515459

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档