Resumen del problema: Al explorar sitios que no están en inglés y que no especifican explícitamente la codificación de caracteres correcta con UIWebView en el iOS, la página no se puede mostrar correctamente.¿Cómo cambiar la codificación de caracteres en UIWebView?
explicación detallada: Como el método loadRequest:
en UIWebView utilizará la codificación especificada en la cabecera charset enviado desde el servidor web o el juego de caracteres escrita en la etiqueta meta HTML, y por defecto a iso-8859-1 (bueno, No estoy muy seguro de esto) cuando no se especifica el juego de caracteres, lo que hace que los sitios que no están en inglés no se puedan mostrar correctamente.
He intentado con Google una forma de cambiar el conjunto de caracteres que usa UIWebView, pero la única forma es usar el método loadData:MIMEType:textEncodingName:baseURL:
para especificar el nombre de la codificación.
Sin embargo, no es una buena idea usar loadData:MIMEType:textEncodingName:baseURL:
+ NSURLConnection en lugar de loadRequest:
, porque UIWebView no llamará al método delegado webView:shouldStartLoadWithRequest:navigationType:
para marcos, e incluso si encontramos una manera para ser notificado cuando UIWebView cargar un marco, no podemos llamar al loadData:MIMEType:textEncodingName:baseURL:
para cargar el contenido del marco, porque cargará el marco como página externa si lo hacemos.
Además, he intentado utilizar un hack de JavaScript, pero parece que la propiedad es de solo lectura y no se puede cambiar.
[webView stringByEvaluatingJavaScriptFromString:@"document.characterSet='utf-8';"];
Otra solución es la inserción de una etiqueta meta con respecto al HTML, y pedir UIWebView para cargar el código modificado, pero el problema del marco mencionado anteriormente también se aplican aquí.
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
Pregunta: ¿Hay alguna solución mejor que puede cambiar la codificación de caracteres en una página web cargada en UIWebView y manejar adecuadamente los marcos?
indique su URL aquí, entonces me permiten comprobar. –
¿tiene usted control sobre la página web o el servidor? – Magnus
@magnus que sería demasiado fácil;) – Till