Recently two ajax charset response problem have been discovered.
See http://primefaces.prime.com.tr/forum/vi ... f=3&t=1312
and
http://primefaces.prime.com.tr/forum/vi ... f=3&t=1304
After code digging I've found the problem in org.primefaces.application.PrimeFacesPhaseListener class
in the method initPartialResponseWriter. It set character encoding for the response writer but not for response itself.
The character encoding for the response will be always ISO-8859-1!
The correct method code is below
Code: Select all
private void initPartialResponseWriter(FacesContext facesContext) {
if(facesContext.getResponseWriter() != null)
return;
try {
ServletResponse response = (ServletResponse) facesContext.getExternalContext().getResponse();
ServletRequest request = (ServletRequest) facesContext.getExternalContext().getRequest();
response.setCharacterEncoding(request.getCharacterEncoding());
RenderKit renderKit = facesContext.getRenderKit();
ResponseWriter responseWriter = renderKit.createResponseWriter(response.getWriter(), null, request.getCharacterEncoding());
facesContext.setResponseWriter(responseWriter);
}catch(IOException exception) {
exception.printStackTrace();
}
}
Code: Select all
response.setCharacterEncoding(request.getCharacterEncoding());