HttpURLConnection输出流中文字符

时间:2012-03-09 07:29:48

标签: java character httpurlconnection outputstream

我使用HttpUrlConnection在json外面发帖但似乎中文字符正在变为????? 我尝试了不同的编码风格,如utf-16,big 5,但我无法理解是什么导致了这一点。 当我调试这个时,我可以在帖子之前看到chineese字符,但是当发布时,它会改变原因吗?  代码部分在下面

        String postData,String charset) throws MalformedURLException, IOException{
        URL url = new URL(targetUrl);
        HttpURLConnection connection = (HttpURLConnection) url.openConnection(
                                                                Proxy.NO_PROXY);
        connection.setConnectTimeout(postTimeout);
        connection.setDoOutput(true);
        connection.setInstanceFollowRedirects(false);
        connection.setRequestMethod("POST");
        connection.setRequestProperty("Content-Type", 
                                    contentType+"; charset="+charset);//+charset.getName().toUpperCase());//+charset.getName());



        sleep(sleepTime);
        OutputStream os = connection.getOutputStream();
        //"UnicodeBigUnmarked"
//        
//        byte[] bt= postData.getBytes();
//        System.out.println(bt);
//        os.write(bt);
//        System.out.println();
//        os.flush();
        //System.out.println(postData);
        try
        {
            Writer writer = new OutputStreamWriter(os, charset);
            writer.write(postData);
            writer.flush();
            writer.close();
        } catch (IOException e) {
            logger.severe("Http POST exception");

        } finally {
            if (os != null) {
                os.close();
            }
        }



       int responseCode = connection.getResponseCode();

       connection.disconnect();

       return responseCode;

我尝试使用big5,utf-16,但仍然没有变化。

感谢。

1 个答案:

答案 0 :(得分:1)

我相信你应该在JSon中使用unicode ascii-safe表示,如解释here