Hi Mark, Thanks again for you help. In order to help you help me (-' , I will give more details on my goal and my problem: I want to build a servlet which let application clients ( not HUMAN.a client application, thus HTML forms will do no use here) Send HTTP requests to the servlet, which queries a DB (Oracle), and then the servlet sends back a response to the client application The requests must support windows-1255 charset encoding (Windows Hebrew)
At first I decided to receive the request parameters , using GET request , and I attached previously the code, which works fine , and I could even for debug purpose send the request in the url of IE browser (though the client application wouldn't use a browser ,but call GET request with the parameters desired, using windows-1255 charset encoding) After reading your response and other forums response, which agreed that sending a non English characters in GET request is a bad idea, I decided to implement it with POST. So now I have two problems 1. writing the servlet. 2. writing a client that will send requests using POST. Here is a sample servlet and client. It should have worked but it don't (-: , I figure it is a small thing, but did not found it till far. THIS IS THE SERVER'S CODE: import javax.servlet.*; import javax.servlet.http.*; import java.io.IOException; import java.io.PrintWriter; public class Hebrew3test extends HttpServlet { public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("cp1255"); response.setCharacterEncoding("cp1255"); response.setContentType("Text/html; cp1255"); PrintWriter out = response.getWriter(); String name = request.getParameter("name"); out.println(name); } public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } } THIS IS THE CLIENT'S CODE: import java.io.*; import java.net.*; public class HttpClient_cp1255_2 { try { String host = "127.0.0.1"; //tomcat5 host - local machine port = "8083" //tomcat5 port String data = "name=" + URLEncoder.encode("\u05d9\u05d0\u05d9\u05e8", "cp1255"); // the unicode for "Yair" in hebrew. URL test = new URL("http://"+host+":"+port+"/userprofile/hebrew3test"); 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(); out.write(data.getBytes("Cp1255")); // writing the request in Cp1255 encoding. out.close(); InputStream in = req.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(in,"cp1255")); // reading the response in Cp1255 encoding. String line; File f = new File("in.txt"); // instead of getting my name in hebrew . I get "????" four times 0xF9 in the text file in.txt FileWriter fw = new FileWriter(f); while ((line = br.readLine()) != null) { System.out.println(line); fw.write(line); } fw.close(); } catch (Exception e) { e.printStackTrace(); } } } BTW, One more thing , I modified /conf/server.xml and added attribute URIEncoding="cp1255" useBodyEncodingForURI="true" It still don't work Yair -----Original Message----- From: Mark Thomas [mailto:[EMAIL PROTECTED] Sent: ג 20 אפריל 2004 23:29 To: 'Tomcat Users List' Subject: RE: Getting a request in a non English character http://jakarta.apache.org/tomcat/tomcat-5.0-doc/config/http.html Tomcat 4 ships with the same connector but the docs aren't quite up to date on the web site. Mark > -----Original Message----- > From: Yair Fine [mailto:[EMAIL PROTECTED] > Sent: Monday, April 19, 2004 10:48 PM > To: 'Tomcat Users List' > Subject: RE: Getting a request in a non English character > > Hi Mark, > Thanks for your reply , > You wrote : > "The Coyote HTTP/1.1 connector has a useBodyEncodingForURI attribute > which if set to true will use the request body encoding to decode" > > Where can I configure the useBodyEncodingForURI attribute, is it in an > XML file ? Which one ? Thanks > Yair > > > > > > -----Original Message----- > From: Mark Thomas [mailto:[EMAIL PROTECTED] > Sent: ג 20 אפריל 2004 21:19 > To: 'Tomcat Users List' > Subject: RE: Getting a request in a non English character > > > You might find the text below useful. It is my standard text on > character encoding. > > Mark > > REQUESTS > ======== > > There are a number of situations where there may be a requirement to > use non-US ASCII characters in a URI. These include: > - Parameters in the query string > - Servlet paths > > There is a standard for encoding URIs > (http://www.w3.org/International/O-URL-code.html) but this standard is > not consistently followed by clients. This causes a number of > problems. > > The functionality provided by Tomcat (4 and 5) to handle this less > than ideal situation is described below. > > 1. The Coyote HTTP/1.1 connector has a useBodyEncodingForURI attribute > which if set to true will use the request body encoding to decode the > URI query parameters. > - The default value is true for TC4 (breaks spec but gives > consistent > behaviour across TC4 versions) > - The default value is false for TC5 (spec compliant but > there may be > migration issues for some apps) > 2. The Coyote HTTP/1.1 connector has a URIEncoding attribute which > defaults to ISO-8859-1. 3. The parameters class > (o.a.t.u.http.Parameters) has a QueryStringEncoding field > which defaults > to the URIEncoding. It must be set before the parameters are parsed to > have an effect. > > Things to note regarding the servlet API: > 1. HttpServletRequest.setCharacterEncoding() normally only applies to > the request body NOT the URI. 2. HttpServletRequest.getPathInfo() is > decoded by the web container. 3. HttpServletRequest.getRequestURI() is > not decoded by container. > > Other tips: > 1. Use POST with forms to return parameters as the parameters are then > part of the request body. > > > RESPONSES > ========= > > HTML META > tags are ignored by Tomcat. You may use <%@ page pagEncoding="..." %> > for JSPs. > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]