0

Java と Eclipse を使用して、http ポストで utf8 データを送信しようとしています。何を試しても、スクリプトは間違った utf8 コードを送信します! たとえば、私はギリシャ文字を送信しようとしています: utf8 では %CE%BA である "κ" は、反対側が "º" である %C2%BA を受信します。私はすべてを試してみましたが、同じ結果が得られました。誰かが私を助けてくれますか?

これが私のコードの最新の反復です:

         //trans = URLEncoder.encode(trans,"UTF8");

    String urlParameters =  "reply=1&message=" + trans + "%CE%BA%CE%B1%CE%BB%CE%AD%CF%83%CF%84%CE%B5%20%CF%83%CF%84%CE%BF%20%CE%A0%CE%B1%CF%81%CE%AF%CF%83%CE%B9%CF%80%CE%BF%CE%B4%CE%B9%CE%B1";
    System.out.println(urlParameters);
    URL url = new URL("https://posttestserver.com/post.php");
    //URLConnection conn = url.openConnection();
    //conn.setDoOutput(true);


    //////////////////////////
    HttpURLConnection connection = (HttpURLConnection) url.openConnection();           
    connection.setDoOutput(true);
    connection.setDoInput(true);
    connection.setInstanceFollowRedirects(false); 
    connection.setRequestMethod("POST"); 
    connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); 
    //connection.setRequestProperty("charset", "ascii");
    connection.setRequestProperty("Content-Length", "" + Integer.toString(urlParameters.getBytes().length));
    connection.setUseCaches (false);



    DataOutputStream wr = new DataOutputStream(connection.getOutputStream ());
    wr.write(urlParameters.getBytes("UTF8"));
    wr.flush();
    wr.close();
    connection.disconnect();

多くの場合にエンコードを試みたので、一部をコメントアウトしました...

何が起こっているのかわかりません:(文字列に次のことを行うと:

        byte[] transc = trans.getBytes("UTF-8");


    for(int i=0;i < trans.length(); i=i+1){
    System.out.println(trans.codePointAt(i));
    System.out.println(transc[i]);
    }

Eclipse コンソールに次の出力が表示されます。 -75 961 32 943 -49 963 -125 953 -49

プロットが厚くなります!文字列を POST の BODY の一部として送信すると、すべて問題ありません。POST のパラメーターとして送信すると、めちゃくちゃになります。クライアントに、体内で受け入れるように変更できるかどうか尋ねましたが、そうでない場合は... ここで何が起こっているのですか??? 助けてください、これは2週間私を悩ませています...

4

1 に答える 1

1

問題は送り手ではなく、受け手だと思います。パラメータをデコードするために受信機を使用する文字セットはどれですか?

サーバーの単純な行でそれを知ることができます:

System.getProperty("file.encoding");
于 2013-07-23T04:35:47.033 に答える