Hai Frank, I may be wrong but its my guess Usually u see squares only when its an issue with Font
If some reader unable to decode the bytes with some encoding.. it will throw an error :) Mehar On 10/24/06, Java Freelance <[EMAIL PROTECTED]> wrote:
Hi all, I am trying to use http://babelfish.altavista.com online traduction tool to dynamically translate from a language to another. But when i try to parse babelfish response to my request for a translation to russian or greek, i get little squares instead of russian or greek characters. So i tried to use the getResponseBody() on the post method to get an array of bytes so i could convert it using UTF-8 or ISO-8859-1 or UTF-16. No matter what character encoding i use i get those annoying little squares. Here's is my code. Maybe you can figure out what's wrong : HttpClient client = new HttpClient(); HttpClientParams params = client.getParams(); params.setParameter("http.useragent","Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4"); PostMethod post = new PostMethod("http://babelfish.altavista.com/tr"); NameValuePair[] id = {new NameValuePair("doit", "done"), new NameValuePair("intl", "1"), new NameValuePair("tt", "urltext"), new NameValuePair("trtext", "translate this!"), new NameValuePair("lp", "en_ru"), new NameValuePair("btnTrTxt", "Traduction")}; post.setRequestBody(id); post.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler(5, false)); try { status = client.executeMethod(post); if (status != HttpStatus.SC_OK) { message = "Altavista access restricted : status = " + status; //log.warn(message); } else { String encoding = post.getResponseCharSet (); String altavistaResponse /*= new String(post.getResponseBody(), "ISO-8859-1")*/; //altavistaResponse = new String(post.getResponseBody(), "ISO-8859-7"); altavistaResponse = new String( post.getResponseBody(), "UTF-8"); //altavistaResponse = new String(post.getResponseBody(), "UTF-16"); //altavistaResponse = post.getResponseBodyAsString(); String translation = parseAltavistaResponse(altavistaResponse); } } catch (HttpException httpE) { message = "http error: " + httpE.getMessage(); log.warn(message); } catch (IOException ioE) { message = "io error: " + ioE.getMessage(); log.warn(message); } catch (FwkHttpParseException pe) { message = "FwkHttpParseException : " + pe.getMessage(); log.warn(message); } finally { post.releaseConnection(); } public String parseAltavistaResponse(String reponse) throws FwkHttpParseException { String translation; int pos = 0; pos = reponse.indexOf("<form", pos); if (pos == -1) { throw new FwkHttpParseException("Impossible to find '<form' within the response"); } pos = reponse.indexOf("<div", pos); if (pos == -1) { throw new FwkHttpParseException("Impossible to find '<div' after <form within the response"); } pos = reponse.indexOf(">", pos); if (pos == -1) { throw new FwkHttpParseException("Impossible to find '>' after '<div' within the response"); } int pos2 = reponse.indexOf("</", pos); if (pos2 == -1) { throw new FwkHttpParseException("Impossible to find '</' after '<div...>' within the response"); } translation= reponse.substring(pos + 1, reponse.indexOf("</", pos2)); return translation; } I also try to add header to th request like a logical referer but with no interesting result. Please help!!! Franck --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
-- Thanks and Regards SVLN Mehar email:[EMAIL PROTECTED] mobile:09986459049
