Vous convertissez votre chaîne en tableau d'octets, en utilisant le codage UTF-8. Ensuite, vous créez un écrivain de flux, avec un encodage UTF-16, convertissez la valeur de vos octets en chaîne et écrivez-les dans le flux. Honnêtement, je ne vois pas comment cela pourrait fonctionner.
Essayez ceci à la place:
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();
Si vous ne pouvez pas passer une chaîne au write
Méthode, alors écrivez directement dans le flux de sortie:
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();