Edit: Je codait le charcter et utiliser écrivain repsonse pour l'écrire, il est encore avéré être Knigsbergernolatin caractères en sortie xml
response.setCharacterEncoding("UTF-8"); response.setContentType(contentType); //if(contentType!=null)response.setHeader("Content-Type",contentType); Writer writer = response.getWriter();//new OutputStreamWriter(response.getOutputStream(),"UTF-8"); System.err.println("character encoding is "+response.getCharacterEncoding()); writer.write("Königsberger "); writer.flush();
Edit: J'ai essayé setContentType et setContentEncoding avant d'appeler getWriter(), toujours pas de différence dans la production:
if(res.length()>0){ //pw.write(res); response.setCharacterEncoding("UTF-8"); response.setContentType(contentType); //if(contentType!=null)response.setHeader("Content-Type",contentType); Writer writer = response.getWriter();//new OutputStreamWriter(response.getOutputStream(),"UTF-8"); System.err.println("character encoding is "+response.getCharacterEncoding()); writer.write(res); writer.flush(); }
Je lis certains caractères allemands puis sortie en XML de servlet java, voici comment je les lis en UTF8:
int len=0; byte[]buffer=new byte[1024]; OutputStream os = sock.getOutputStream(); InputStream is = sock.getInputStream(); query += "\r\n"; os.write(query.getBytes("UTF8"));//iso8859_1")); do{ len = is.read(buffer); if (len>0) { if(outstring==null)outstring=new StringBuffer(); outstring.append(new String(buffer,0,len, "UTF8")); } }while(len>0); System.out.println(outstring);
System.out émet la chaîne correctement: Königsberger
Cependant quand je cette chaîne de nouvelle tuyauterie mon ServletResponse aussi en utilisant charset = UTF-8 il devient engloutie: Knigsberger
private void outputResponse(String res, HttpServletRequest request, HttpServletResponse response) throws IOException { String outputFormat = getOutputFormat(request); String contentType=null; PrintWriter pw = response.getWriter(); //response.setCharacterEncoding("UTF-8"); System.err.println("output "+res); contentType= "text/xml; charset=UTF-8"; res="<?xml version=\"1.0\" encoding=\"utf-8\"?>" + res; if(contentType!=null)response.setHeader("Content-Type",contentType); if(res.length()>0){ pw.write(res); } pw.flush(); }
spécifier OS/plate-forme. Qu'est-ce que c'est et comment "repapez"? – devio
os est la fenêtre. par repipe je veux simplement dire le sortir du servlet – user121196