[ 
https://issues.apache.org/jira/browse/SOLR-443?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Lars Kotthoff updated SOLR-443:
-------------------------------

    Attachment: SOLR-443-multipart.patch

After reading 
[http://www.w3.org/TR/html401/interact/forms.html#form-content-type] it seems 
to me that the only reliable way to ensure that the data is encoded/decoded 
properly is to send the request parameters as parts of a multi-part request. 
The charset of each part can be set to UTF-8, the content-type header is 
generated by httpclient, and nothing needs to be url-encoded.

The downside is that the size of requests becomes larger, as there's quite a 
lot of overhead when putting each parameter into a separate part.

Attached the patch "SOLR-443-multipart.patch" which makes the necessary changes 
to CommonsHttpSolrServer. Verified to work with the Jetty version used in the 
tests and Tomcat 5.5.

A possible optimisation would be to check each parameter for non-ascii 
characters and only make it a new part if it does, otherwise just include it as 
a parameter.

> POST queries don't declare its charset
> --------------------------------------
>
>                 Key: SOLR-443
>                 URL: https://issues.apache.org/jira/browse/SOLR-443
>             Project: Solr
>          Issue Type: Bug
>          Components: clients - java
>    Affects Versions: 1.2
>         Environment: Tomcat 6.0.14
>            Reporter: Andrew Schurman
>            Priority: Minor
>         Attachments: SOLR-443-multipart.patch, solr-443.patch, 
> solr-443.patch, SolrDispatchFilter.patch
>
>
> When sending a query via POST, the content-type is not set. The content 
> charset for the POST parameters are set, but this only appears to be used for 
> creating the Content-Length header in the commons library. Since a query is 
> encoded in UTF-8, the http headers should also specify content type charset.
> On Tomcat, this causes problems when the query string contains non-ascii 
> characters (characters with accents and such) as it tries to parse the POST 
> body in its default ISO-9886-1. There appears to be no way to set/change the 
> default encoding for a message body on Tomcat.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to