0

電話を使用して送信された GCM メッセージは、トルコ語の文字ではありません。以下のエンコードは解決策を提示していません。

このようにして、Androidからメッセージを受け取ります。Android コード

@Override
protected void onMessage(Context context, Intent intent) {
    String output = "";
    try {
        output = new String(intent.getStringExtra("message").getBytes("8859_1"), "utf-8");
    } catch (UnsupportedEncodingException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    generateNotification(context, output);
}

ASP.NET C# このように、メッセージを送信します。さらに、コンソール アプリケーション。C# コード

public string SendNotification(string deviceId, string message)
{
    var utf8 = Encoding.UTF8;
    byte[] utfBytes = utf8.GetBytes(message);
    message = utf8.GetString(utfBytes, 0, utfBytes.Length);   

    string GoogleAppID = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
    var SENDER_ID = "XXXXXXXXXXXXXXXXX";
    var value = message;
    WebRequest tRequest;
    tRequest = WebRequest.Create("https://android.googleapis.com/gcm/send");
    tRequest.Method = "post";
    tRequest.ContentType = "application/x-www-form-urlencoded;charset=UTF-8";
    tRequest.Headers.Add(string.Format("Authorization: key={0}", GoogleAppID));

    tRequest.Headers.Add(string.Format("Sender: id={0}", SENDER_ID));

    System.Web.HttpUtility.UrlEncode(message);

    string postData = "collapse_key=score_update&time_to_live=108&delay_while_idle=1&data.message=" + message + "&data.time=" + 
    System.DateTime.Now.ToString() + "&registration_id=" + deviceId.ToString() + "";
    Console.WriteLine(postData);
    Byte[] byteArray = Encoding.UTF8.GetBytes(postData);
    tRequest.ContentLength = byteArray.Length;

    Stream dataStream = tRequest.GetRequestStream();
    dataStream.Write(byteArray, 0, byteArray.Length);
    dataStream.Close();

    WebResponse tResponse = tRequest.GetResponse();

    dataStream = tResponse.GetResponseStream();

    StreamReader tReader = new StreamReader(dataStream);

    String sResponseFromServer = tReader.ReadToEnd();

    tReader.Close();
    dataStream.Close();
    tResponse.Close();
    return sResponseFromServer;
}
4

2 に答える 2

0

この行は間違っているようです - output = new String(intent.getStringExtra("message").getBytes("8859_1"), "utf-8");

getBytes("8859_1")電話すると、トルコ語の文字が失われると思います。

試すoutput = intent.getStringExtra("message");

于 2013-10-10T16:39:23.593 に答える