解决httpclient传中文乱码问题
2012-11-08 16:24
197 查看
这问题是源码本身的问题,在httpcore-4.2.1.jar文件中有个Consts.java类文件内容如下:
而另一个类文件EncodingUtils.java 引用的却是ASCII,代码如下
/* * ==================================================================== * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation. For more * information on the Apache Software Foundation, please see * <http://www.apache.org/>. * */ package org.apache.http; import java.nio.charset.Charset; /** * Commons constants. * * @since 4.2 */ public final class Consts { public static final int CR = 13; // <US-ASCII CR, carriage return (13)> public static final int LF = 10; // <US-ASCII LF, linefeed (10)> public static final int SP = 32; // <US-ASCII SP, space (32)> public static final int HT = 9; // <US-ASCII HT, horizontal-tab (9)> public static final Charset UTF_8 = Charset.forName("UTF-8"); public static final Charset ASCII = Charset.forName("US-ASCII"); public static final Charset ISO_8859_1 = Charset.forName("ISO-8859-1"); private Consts() { } }
而另一个类文件EncodingUtils.java 引用的却是ASCII,代码如下
/* * ==================================================================== * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation. For more * information on the Apache Software Foundation, please see * <http://www.apache.org/>. * */ package org.apache.http.util; import java.io.UnsupportedEncodingException; import org.apache.http.Consts; /** * The home for utility methods that handle various encoding tasks. * * * @since 4.0 */ public final class EncodingUtils { /** * Converts the byte array of HTTP content characters to a string. If * the specified charset is not supported, default system encoding * is used. * * @param data the byte array to be encoded * @param offset the index of the first byte to encode * @param length the number of bytes to encode * @param charset the desired character encoding * @return The result of the conversion. */ public static String getString( final byte[] data, int offset, int length, String charset ) { if (data == null) { throw new IllegalArgumentException("Parameter may not be null"); } if (charset == null || charset.length() == 0) { throw new IllegalArgumentException("charset may not be null or empty"); } try { return new String(data, offset, length, charset); } catch (UnsupportedEncodingException e) { return new String(data, offset, length); } } /** * Converts the byte array of HTTP content characters to a string. If * the specified charset is not supported, default system encoding * is used. * * @param data the byte array to be encoded * @param charset the desired character encoding * @return The result of the conversion. */ public static String getString(final byte[] data, final String charset) { if (data == null) { throw new IllegalArgumentException("Parameter may not be null"); } return getString(data, 0, data.length, charset); } /** * Converts the specified string to a byte array. If the charset is not supported the * default system charset is used. * * @param data the string to be encoded * @param charset the desired character encoding * @return The resulting byte array. */ public static byte[] getBytes(final String data, final String charset) { if (data == null) { throw new IllegalArgumentException("data may not be null"); } if (charset == null || charset.length() == 0) { throw new IllegalArgumentException("charset may not be null or empty"); } try { return data.getBytes(charset); } catch (UnsupportedEncodingException e) { return data.getBytes(); } } /** * Converts the specified string to byte array of ASCII characters. * * @param data the string to be encoded * @return The string as a byte array. */ public static byte[] getAsciiBytes(final String data) { if (data == null) { throw new IllegalArgumentException("Parameter may not be null"); } try { return data.getBytes(Consts.ASCII.name()); } catch (UnsupportedEncodingException e) { throw new Error("HttpClient requires ASCII support"); } } /** * Converts the byte array of ASCII characters to a string. This method is * to be used when decoding content of HTTP elements (such as response * headers) * * @param data the byte array to be encoded * @param offset the index of the first byte to encode * @param length the number of bytes to encode * @return The string representation of the byte array */ public static String getAsciiString(final byte[] data, int offset, int length) { if (data == null) { throw new IllegalArgumentException("Parameter may not be null"); } try { return new String(data, offset, length, Consts.ASCII.name()); } catch (UnsupportedEncodingException e) { throw new Error("HttpClient requires ASCII support"); } } /** * Converts the byte array of ASCII characters to a string. This method is * to be used when decoding content of HTTP elements (such as response * headers) * * @param data the byte array to be encoded * @return The string representation of the byte array */ public static String getAsciiString(final byte[] data) { if (data == null) { throw new IllegalArgumentException("Parameter may not be null"); } return getAsciiString(data, 0, data.length); } /** * This class should not be instantiated. */ private EncodingUtils() { } } 而us-ascii常有乱码问题,故我改了器源码后,又做成jar包使用,发现者问题不复存在。现在把修改的后的文件发出来给大家使用,一切正常,不存在有些类不能用的问题。 下载地址:http://download.csdn.net/detail/fangmingshijie/4746796
相关文章推荐
- 使用httpclient全书json数据并解决中文乱码问题
- 解决HttpClient的FilePart上传文件中使用中文名称文件名乱码问题
- 解决HttpClient的FilePart上传文件中使用中文名称文件名乱码问题
- httpClient使用postMethod方法发送请求,携带参数并解决中文乱码问题
- httpclient解决中文乱码问题
- HttpClient 4.3.* 上传带中文文件名文件文件名乱码问题的解决
- httpclient返回值中文乱码问题解决方法
- httpclient返回值中文乱码问题解决方法
- 解决httpclient上传文件的时候中文文件名乱码的问题
- httpclient返回值中文乱码问题解决方法
- 解决httpClient接口访问web时返回中文字符乱码问题
- 关于使用httpclient传输json信息并解决中文乱码问题
- 解决httpclient传中文乱码问题
- httpclient中文乱码问题解决方法(收藏)
- Sublime Text 2支持GB2312和GBK,解决中文显示乱码问题
- 发现问题 解决问题:gitbash 中文乱码
- VMWare6.5下redhat5.4中文乱码问题解决
- ]解决JBPM图形流程设计器的gpd.xml文件的中文乱码问题
- 网页UTF-8中文乱码问题解决方法
- 解决php中json中文乱码以及JQuery读取中文乱码的问题