5

gsonライブラリを使用してデータをjson形式の文字列にシリアル化しています。サーバーでjsonメッセージを受信すると、Unicode文字の疑問符が表示されます。たとえば、Androidクライアントから次の情報を送信します。

{"message_content":"This is a test message: مرحبا أصدقاء"}

しかし、サーバーはそれを次のように受け取ります。

{"message_content":"This is a test message: ???? ??????"}

コード:

import java.io.UnsupportedEncodingException;

import android.telephony.PhoneNumberUtils;

import com.google.gson.Gson;

import com.google.gson.GsonBuilder;
import com.google.gson.annotations.SerializedName;

public class TestMessage {

    @SerializedName("message_content")
    private String mMessageContent;

    public TestMessage(String messageContent) {

        try {
            byte[] utf8 = messageContent.getBytes("UTF-8");
            mMessageContent = new String(utf8, "UTF-8");
        } catch (UnsupportedEncodingException e) {
            mMessageContent = messageContent;
        }
    }

    public String toJSON() {
        Gson gson = new GsonBuilder().create();
        return gson.toJson(this);
    }
} 
4

1 に答える 1

5

デバッグしたところ、HTTPPOSTがUTF-8をサポートしていないことがわかりました。この投稿をフォロー:http post/putを送信するときのAndroidのデフォルトの文字セット-特殊文字の問題

httpPost.setEntity(new StringEntity(body, HTTP.UTF_8));
于 2013-03-17T08:02:59.497 に答える