You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomcat.apache.org by Fernando Salazar de Paz <fs...@innova.uniovi.es> on 2005/04/11 10:23:36 UTC

Webdav issue with non ASCII characters

I can PUT archives but I am not be able to read them anymore.

 

For example:

 

Archive:                        manualín.pdf

 

In WebdavServlet::service

 

    protected void service(HttpServletRequest req, HttpServletResponse resp)

        throws ServletException, IOException {

 

        String method = req.getMethod();

 

        if (debug > 0) {

(1)        log("[" + req.getRequestURI() + "]");

            String path = getRelativePath(req);

(3)          log("[" + method + "] " + path);

        }

 

The output:

 

INFO: webdav: [/webdav/manual%C3%ADn.pdf]                          (1)

 

DefaultServlet::getRelativePath   request.getPathInfo()                 (2)

INFO: webdav: DefaultServlet::getRelativePath.
request.getPathInfo()=/manualín.pdf

 

INFO: webdav: [HEAD] /manualín.pdf                                      (3)

 

 

In NTFS Tomcat has written manualín.pdf instead of manualín.pdf

 

 

I have tried with DefaultServlet’s languageEncoding init parameter using
UTF-8 with no result. 

 

 

Thanks in advance


RE: Webdav issue with non ASCII characters

Posted by Fernando Salazar de Paz <fs...@innova.uniovi.es>.
The problem arises with pdf files, for example. Although I am using IE (it
uses UTF-8 in the encoding process), when I request a PDF file a new
(second) request is made by Acrobat Reader. Acrobat Reader uses ISO-8859-1
and Tomcat will not be able to decode the uri properly. What is the reason
for the second request ?, with ZIP files, txt files I have no problem.

I am getting mad <:0 


It's a client issue, but what can I do at server side to provide
compatibility ? can I guess the encoding at servlet's service method ?

Thanks in advance


-----Mensaje original-----
De: Fernando Salazar de Paz [mailto:fsaldepaz@innova.uniovi.es] 
Enviado el: lunes, 11 de abril de 2005 16:41
Para: 'Tomcat Users List'
Asunto: RE: Webdav issue with non ASCII characters

Using URIEncoding parameter, at Server.xml, PUT and DELETE methods works ok.
I am still having trouble with GET method.


    <!-- Define a non-SSL HTTP/1.1 Connector on port 8080 -->
    <Connector
port="8080"               maxThreads="150" minSpareThreads="25"
maxSpareThreads="75"
               enableLookups="false" redirectPort="8443" acceptCount="100"
               connectionTimeout="20000" disableUploadTimeout="true"
URIEncoding="UTF-8" />


--------------------------- Tomcat log ------------------------------------
INFO: webdav: [HEAD] /última-guía.pdf
11-abr-2005 16:31:32 org.apache.catalina.core.ApplicationContext log
INFO: webdav: DefaultServlet.serveResource:  Serving resource
'/última-guía.pdf' headers only
11-abr-2005 16:31:32 org.apache.catalina.core.ApplicationContext log
INFO: webdav: [PUT] /última-guía.pdf
11-abr-2005 16:31:40 org.apache.catalina.core.ApplicationContext log
INFO: webdav: [GET] /última-guía.pdf
11-abr-2005 16:31:40 org.apache.catalina.core.ApplicationContext log
INFO: webdav: DefaultServlet.serveResource:  Serving resource
'/última-guía.pdf' headers and data
11-abr-2005 16:31:40 org.apache.catalina.core.ApplicationContext log
INFO: webdav: DefaultServlet.serveFile:  contentType='application/pdf'
11-abr-2005 16:31:40 org.apache.catalina.core.ApplicationContext log
INFO: webdav: DefaultServlet.serveFile:  contentLength=202259
11-abr-2005 16:31:40 org.apache.catalina.core.ApplicationContext log
INFO: webdav: [GET] /?ltima-gu?a.pdf
11-abr-2005 16:31:40 org.apache.catalina.core.ApplicationContext log
INFO: webdav: DefaultServlet.serveResource:  Serving resource
'/?ltima-gu?a.pdf' headers and data
11-abr-2005 16:31:57 org.apache.catalina.core.ApplicationContext log
INFO: webdav: [DELETE] /última-guía.pdf
--------------------------- Tomcat log ------------------------------------





---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-user-help@jakarta.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-user-help@jakarta.apache.org


RE: Webdav issue with non ASCII characters

Posted by Fernando Salazar de Paz <fs...@innova.uniovi.es>.
Using URIEncoding parameter, at Server.xml, PUT and DELETE methods works ok.
I am still having trouble with GET method.


    <!-- Define a non-SSL HTTP/1.1 Connector on port 8080 -->
    <Connector
port="8080"               maxThreads="150" minSpareThreads="25"
maxSpareThreads="75"
               enableLookups="false" redirectPort="8443" acceptCount="100"
               connectionTimeout="20000" disableUploadTimeout="true"
URIEncoding="UTF-8" />


--------------------------- Tomcat log ------------------------------------
INFO: webdav: [HEAD] /última-guía.pdf
11-abr-2005 16:31:32 org.apache.catalina.core.ApplicationContext log
INFO: webdav: DefaultServlet.serveResource:  Serving resource
'/última-guía.pdf' headers only
11-abr-2005 16:31:32 org.apache.catalina.core.ApplicationContext log
INFO: webdav: [PUT] /última-guía.pdf
11-abr-2005 16:31:40 org.apache.catalina.core.ApplicationContext log
INFO: webdav: [GET] /última-guía.pdf
11-abr-2005 16:31:40 org.apache.catalina.core.ApplicationContext log
INFO: webdav: DefaultServlet.serveResource:  Serving resource
'/última-guía.pdf' headers and data
11-abr-2005 16:31:40 org.apache.catalina.core.ApplicationContext log
INFO: webdav: DefaultServlet.serveFile:  contentType='application/pdf'
11-abr-2005 16:31:40 org.apache.catalina.core.ApplicationContext log
INFO: webdav: DefaultServlet.serveFile:  contentLength=202259
11-abr-2005 16:31:40 org.apache.catalina.core.ApplicationContext log
INFO: webdav: [GET] /?ltima-gu?a.pdf
11-abr-2005 16:31:40 org.apache.catalina.core.ApplicationContext log
INFO: webdav: DefaultServlet.serveResource:  Serving resource
'/?ltima-gu?a.pdf' headers and data
11-abr-2005 16:31:57 org.apache.catalina.core.ApplicationContext log
INFO: webdav: [DELETE] /última-guía.pdf
--------------------------- Tomcat log ------------------------------------



-----Mensaje original-----
De: Fernando Salazar de Paz [mailto:fsaldepaz@innova.uniovi.es] 
Enviado el: lunes, 11 de abril de 2005 14:36
Para: 'Tomcat Users List'
Asunto: RE: Webdav issue with non ASCII characters

Internet Explorer uses UTF-8 to encode URLs and Tomcat tries "ISO-8859-1" in
decoding. The result is a wrong filename.

String fileName = URLEncoder.encode("manualín.pdf", "ISO-8859-1");

*1
System.out.println(fileName+" produce "+URLDecoder.decode(fileName,
"UTF-8"));

fileName = URLEncoder.encode("manualín.pdf", "UTF-8");

*2
System.out.println(fileName+" produce "+URLDecoder.decode(fileName,
"ISO-8859-1"));

--------------------- OUTPUT follows ---------------------
*1     manual%EDn.pdf produce manual?n.pdf
*2     manual%C3%ADn.pdf produce manualín.pdf


manualín.pdf	=>      manualín.pdf


Other browsers uses "ISO-8859-1" but we need to be compatible with IE.


Thanks and regards



---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-user-help@jakarta.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-user-help@jakarta.apache.org


RE: Webdav issue with non ASCII characters

Posted by Fernando Salazar de Paz <fs...@innova.uniovi.es>.
Internet Explorer uses UTF-8 to encode URLs and Tomcat tries "ISO-8859-1" in
decoding. The result is a wrong filename.

String fileName = URLEncoder.encode("manualín.pdf", "ISO-8859-1");

*1
System.out.println(fileName+" produce "+URLDecoder.decode(fileName,
"UTF-8"));

fileName = URLEncoder.encode("manualín.pdf", "UTF-8");

*2
System.out.println(fileName+" produce "+URLDecoder.decode(fileName,
"ISO-8859-1"));

--------------------- OUTPUT follows ---------------------
*1     manual%EDn.pdf produce manual?n.pdf
*2     manual%C3%ADn.pdf produce manualín.pdf


manualín.pdf	=>      manualín.pdf


Other browsers uses "ISO-8859-1" but we need to be compatible with IE.


Thanks and regards



-----Mensaje original-----
De: Fernando Salazar de Paz [mailto:fsaldepaz@innova.uniovi.es] 
Enviado el: lunes, 11 de abril de 2005 10:24
Para: tomcat-user@jakarta.apache.org
Asunto: Webdav issue with non ASCII characters

I can PUT archives but I am not be able to read them anymore.

 

For example:

 

Archive:                        manualín.pdf

 

In WebdavServlet::service

 

    protected void service(HttpServletRequest req, HttpServletResponse resp)

        throws ServletException, IOException {

 

        String method = req.getMethod();

 

        if (debug > 0) {

(1)        log("[" + req.getRequestURI() + "]");

            String path = getRelativePath(req);

(3)          log("[" + method + "] " + path);

        }

 

The output:

 

INFO: webdav: [/webdav/manual%C3%ADn.pdf]                          (1)

 

DefaultServlet::getRelativePath   request.getPathInfo()                 (2)

INFO: webdav: DefaultServlet::getRelativePath.
request.getPathInfo()=/manualín.pdf

 

INFO: webdav: [HEAD] /manualín.pdf                                      (3)

 

 

In NTFS Tomcat has written manualín.pdf instead of manualín.pdf

 

 

I have tried with DefaultServlet’s languageEncoding init parameter using
UTF-8 with no result. 

 

 

Thanks in advance



---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-user-help@jakarta.apache.org