0

使用 HttpServiceClient (Apache) 发送包含特殊字符的字符串时,我有一个关于 UTF-8 编码的问题

我在下面有一小段代码,该方法接受字符串并通过 Http 发送它(在代码中并不完全完整)。

尽管解码后的字符串似乎可以正常工作,但我想知道 method.addparameter 或 httpClient.execute(method) 是否再次对字符串进行编码。我们的问题是,在客户端,字符串似乎是双重编码的!

例如。strReq = äöü

import org.apache.commons.codec.DecoderException;
import org.apache.commons.codec.EncoderException;
import org.apache.commons.codec.net.URLCodec;
import org.apache.commons.httpclient.methods.PostMethod;



public class Demo {
    public static void Test(String strReq) throws CancellationException, IOException, DecoderException {

        PostMethod method = null;

            method = new PostMethod("www.example.com");

            // Encode the XML document.
            URLCodec codec = new URLCodec();
            String requestEncoded = new String(strReq);
            try {
                requestEncoded = codec.encode(strReq);

            } catch (EncoderException e) {

            }

            System.out.println("encoded req = "+requestEncoded);

            method.addParameter(Constants.Hdr, requestEncoded);


            String  str2 = codec.decode(requestEncoded);

            System.out.println("str2 ="+str2);
        }
4

0 回答 0