Mark, Your client and servlet works!! Thanks. Now I have only one request, I tried to modify the client, that instead of preparing a predefined line: String data = "name=" + URLEncoder.encode("\u05d9\u05d0\u05d9\u05e8", "cp1255"); The client will read a file that is written in a windows -1255 encoding
BufferedReader bri = new BufferedReader(new InputStreamReader(new FileInputStream("request"),"Cp1255")); String line = bri.readLine(); // read just one line from hebrew request text String data = URLEncoder.encode(line, "cp1255"); And this some how doesn't work , Any suggestions? Regard Yair -----Original Message----- From: Mark Thomas [mailto:[EMAIL PROTECTED] Sent: Sunday, April 25, 2004 5:09 PM To: 'Tomcat Users List' Subject: RE: Getting a request in a non English character Got this working. Mainly just the issue of the encoding that was being used for the response from the servlet. You need to be careful with the names of the encoding as they can differ between operating systems. My recommendation would be to always use UTF-8. My version of your servlet and client are below. Hope this helps Mark SERVLET ======= package test.encoding; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class Echo extends HttpServlet { public Echo() { super(); } public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } public void doPost( HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("cp1255"); response.setContentType("text/html; charset=windows-1255"); PrintWriter out = response.getWriter(); String name = request.getParameter("name"); out.println(name); } } CLIENT ====== package test.encoding; import java.io.BufferedReader; import java.io.File; import java.io.FileWriter; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.net.URL; import java.net.URLConnection; import java.net.URLEncoder; public class Client { public static void main(String[] args) { try { String host = "localhost"; String port = "8080"; // the unicode for "Yair" in hebrew. String data = "name=" + URLEncoder.encode("\u05d9\u05d0\u05d9\u05e8", "cp1255"); // URL test = new URL("http://"+host+":"+port+"/Bugfix/encoding/bug14742Output.jsp"); URL test = new URL("http://"+host+":"+port+"/Bugfix/servlet/Echo"); URLConnection req = test.openConnection(); req.setDoOutput(true); req.setRequestProperty("Content-Type", "application/x-www-form-urlencoded; charset=windows-1255"); req.setRequestProperty("Content-Length", Integer.toString(data.length())); OutputStream out = req.getOutputStream(); // writing the request in Cp1255 encoding. out.write(data.getBytes("cp1255")); out.close(); InputStream in = req.getInputStream(); // reading the response in Cp1255 encoding. BufferedReader br = new BufferedReader(new InputStreamReader(in)); // instead of getting my name in hebrew . I get "????" four times 0xF9 in the text file in.txt File f = new File("in.txt"); FileWriter fw = new FileWriter(f); int code; while ((code = br.read()) != -1) { System.out.println(code); fw.write(code); } fw.close(); } catch (Exception e) { e.printStackTrace(); } } }