Вы преобразуете свою строку в массив байтов, используя кодирование UTF-8. Затем вы создаете писатель потока, с кодированием UTF-16, преобразуйте значение ваших байтов в строку и записываете их в поток. Честно говоря, я не вижу, как это может работать.
Попробуйте вместо этого:
String toastMessage = "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
"<wp:Notification xmlns:wp=\"WPNotification\">" +
"<wp:Toast>" +
"<wp:Text1>" + name + "</wp:Text1>" +
"<wp:Text2>" + body + "</wp:Text2>" +
"<wp:Param>/Page2.xaml?NavigatedFrom=Toast Notification</wp:Param>" +
"</wp:Toast> " +
"</wp:Notification>";
// Do your stuff, initialize the headers, and so on...
OutputStreamWriter writer = new OutputStreamWriter(uc.getOutputStream(), "utf-8");
writer.write(toastMessage, 0, toastMessage.length());
uc.connect();
Если вы не можете передать строку write
Метод, затем запишите непосредственно в выходном потоке:
String toastMessage = "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
"<wp:Notification xmlns:wp=\"WPNotification\">" +
"<wp:Toast>" +
"<wp:Text1>" + name + "</wp:Text1>" +
"<wp:Text2>" + body + "</wp:Text2>" +
"<wp:Param>/Page2.xaml?NavigatedFrom=Toast Notification</wp:Param>" +
"</wp:Toast> " +
"</wp:Notification>";
byte[] mesg = toastMessage.getBytes("UTF-8");
uc.setDoOutput(true);
uc.setDoInput(true);
uc.getOutputStream().write(mesg, 0, mesg.length());
uc.connect();