jmorlor Posted February 24, 2013 Share Posted February 24, 2013 Hola a todos. Estoy usando la versión 1.5.3.1 y cuando un cliente deja un mensaje al realizar un pedido o quiere añadirlo al detalle de un pedido ya efectuado, las palabras acentuadas y las ñ no las gestiona bien, aparece por ejemplo: ESPAÑA ESDRÚJULA en vez de ESPAÑA ESDRÚJULA Al responder desde el BO la Ñ y el acento funcionan bien. ¿Alguna idea de donde puede estar el error? Gracias Link to comment Share on other sites More sharing options...
jesa Posted February 24, 2013 Share Posted February 24, 2013 El error está en la codificación de los caracteres. Es un error de prestashop, y tienes que buscar donde se envía el mensaje y cambiarlo. Posiblemente te esté pasando porque tu theme muestre mensajes al cliente con ventanas emergentes. El theme que viene por defecto en prestashop siempre muestras los mensajes incrustados en tu web y ya he probado algunos theme que les da por mostrar mensajes en ventanitas y salen este tipo de errores. Link to comment Share on other sites More sharing options...
jmorlor Posted February 24, 2013 Author Share Posted February 24, 2013 Estoy usando el tema por defecto de prestashop. ver. 1.5.3.1 Solo sale en los mensajes que desde la cuenta de usuario mandan via la ventana de texto de envio de mensajes, ahí es donde está mal el envio de caracteres, donde no codifica bien. Sin embargo en la ventana del BO donde contesto a los mensajes del usuario sale bien, solo es en la del usuario. Por lo que creo que el fallo es en esa parte del código. Gracias por tu respuesta, seguiré investigando. Link to comment Share on other sites More sharing options...
jesa Posted February 24, 2013 Share Posted February 24, 2013 Si, efectivamente el problema de codificación está en la parte de la tienda. Como te digo es algo que ya me ha pasado y tiene que ver con la codificación de caracteres, no confundir con el código fuente de la tienea. A ver si puedo mirar donde lo solucioné yo en su día...y lo pongo por aquí. Link to comment Share on other sites More sharing options...
TechnoSpain Posted February 25, 2013 Share Posted February 25, 2013 Pregunta tonta ¿No puedes machacar el archivo de la 1.5.3.1 con el de otra version? Quizás con el de la 1.5.2... Por probar Link to comment Share on other sites More sharing options...
jesa Posted February 25, 2013 Share Posted February 25, 2013 Si en la versión 1.5.2 funcionara podría ser una posibilidad, pero tampoco funciona. De todos modos, antes de hacer un cambio así habría que ver que diferencias hay entre los ficheros y a que afectan. Si por ejemplo te llega un parámetro en una versión y en otra no, pues te estas cargando a lo mejor la tienda. Link to comment Share on other sites More sharing options...
jmorlor Posted February 26, 2013 Author Share Posted February 26, 2013 El tema es saber que archivo es. Esa era mi pregunta inicial. Gracias. Link to comment Share on other sites More sharing options...
damnboy Posted April 27, 2013 Share Posted April 27, 2013 (edited) Alguien ha encontrado una solución a este problema? Llevo un par de días dándole vueltas al asunto, y lo que está claro es que es algún problema de codificación de caracteres, pero en idiomas está seleccionado como español, y la base de datos actualmente tiene el cotejamiento en "utf8_general_ci" y me pregunto si debería estar en "utf8_spanish_ci" o "utf8_spanish2_ci". Aunque el resto por lo que he podido ir comprobando hasta el momento funciona correctamente. Edited April 27, 2013 by damnboy (see edit history) Link to comment Share on other sites More sharing options...
DavOfe Posted April 30, 2013 Share Posted April 30, 2013 Alguien ha encontrado una solución a este problema? Llevo un par de días dándole vueltas al asunto, y lo que está claro es que es algún problema de codificación de caracteres, pero en idiomas está seleccionado como español, y la base de datos actualmente tiene el cotejamiento en "utf8_general_ci" y me pregunto si debería estar en "utf8_spanish_ci" o "utf8_spanish2_ci". Aunque el resto por lo que he podido ir comprobando hasta el momento funciona correctamente. Probaste a ponerlo en esa codificacion?? Link to comment Share on other sites More sharing options...
damnboy Posted May 2, 2013 Share Posted May 2, 2013 (edited) He probado con éstas dos, además la que he intuído debe ser la utf8 base según mysql (_bin), y también he decidido probar con los juegos de caracteres latin de mysql. También he probado a cambiar el juego de caracteres empleado desde el admin sql de prestashop de utf8 al iso. Todos con mismo resultado. Mi prueba básica es desde un pedido de un cliente, hacer una consulta: "Sabéis cuándo estará disponible mi pedido?" Siempre el mensaje se trunca: "Sab". Si lo envío sin acentos, funciona correctamente. Ahora voy a probar con la versión 1.5.4.1 a ver, aunque en caso de funcionar a ver cómo lo hago, porque me da un canguelo subir de versión la tienda real ... Edit: parece que en 1.5.4.1 sí que funciona ... a parte de haber corregido algunos pequeños detalles gráficos. Ahora mi doble problema: Tengo que actualizar, pánico! Lo que está mejorado gráficamente, significa que tendré que volver a modificar el tema ... :_( Edited May 2, 2013 by damnboy (see edit history) Link to comment Share on other sites More sharing options...
jmorlor Posted May 2, 2013 Author Share Posted May 2, 2013 Creo que el problema, más que con la base de datos, es con la ventana de texto donde se introduce el mensaje, que al procesarla no lo hace con el juego de caracteres utf8 y a partir de ahí ya van todos mal. El caso, es que no es en todas las ventanas de mensajes, hay otras en las que lo hace correctamente. Yo sigo con la version 1.5.3.1, hasta que no esté más depurada la 1.5.4 no doy el salto. He corregido demasiadas cosas que venían en la 1.5.3.1 básica como para arriesgarme a empezar de nuevo. Link to comment Share on other sites More sharing options...
damnboy Posted May 2, 2013 Share Posted May 2, 2013 (edited) Yo corregir corregir no, pero no estoy muy suelto aun en esto de prestashop, y he moficado (según mi punto de vista jeje) bastantes cosas del tema, y al actualizar me da miedo perder cosas, o de las traducciones, o algún problema con la base de datos ... :/ Edited May 2, 2013 by damnboy (see edit history) Link to comment Share on other sites More sharing options...
jesa Posted May 2, 2013 Share Posted May 2, 2013 Como bien dice jmorlor, el problema no es de bbdd es un problema del procesamiento del mensaje. Por más vueltas que le doy a mi código no logro encontrar donde lo corregí. Fue en la versión 1.5.0.17 que supongo no estaréis usando ninguno. En el controller OrderDetailController se procesa el envío del mensaje y solo hay 2 cambios con respecto a la siguiente versión 1.5.0.2. $msgText = Tools::getValue('msgText'); $cm->message = $msgText; y en la 1.5.0.17 estaba así: $msgText = htmlentities(Tools::getValue('msgText'), ENT_COMPAT, 'UTF-8'); $cm->message = Tools::htmlentitiesutf8($msgText); Revisad esa parte. Link to comment Share on other sites More sharing options...
damnboy Posted May 2, 2013 Share Posted May 2, 2013 Muchas gracias, voy a echar un ojo. Link to comment Share on other sites More sharing options...
damnboy Posted May 2, 2013 Share Posted May 2, 2013 (edited) Bueno, realizando más pruebas (aun no he probado a arreglarlo manualmente, pero va a ser el paso que me va a tocar sí o sí) me ha pasado que con una instalación nueva de la versión 1.5.4.1 funciona correctamente ... pero actualizando de la 1.5.3.1 a la 1.5.4.1 sigue sin funcionar!! o_O Edited May 2, 2013 by damnboy (see edit history) Link to comment Share on other sites More sharing options...
jesa Posted May 2, 2013 Share Posted May 2, 2013 La actualización la has hecho con el upgrade o manual? Mira a ver si las tablas son iguales en bbdd porque hay veces que se les olvida poner en el script de actualización alguna modificación que se ha realizado en la bbdd y solo funciona si haces instalación nueva. Por otra parte, pillate un programa para comparar carpetas como el merge y mira a ver que diferencias hay entre tu actualización y la instalación limpia, es una manera relativamente rápida de poder ver que hay distinto. Link to comment Share on other sites More sharing options...
damnboy Posted May 2, 2013 Share Posted May 2, 2013 La he hecho con el 1-click upgrade (pero pasándole el zip de la versión 1.5.4.1). También tengo problemas con la apariencia del tema default, aparecen cosas descuadradas ... igual ha sido una actualización fallida, pero no me da mucha confianza ... Voy a probar lo del merge a ver. Gracias. Link to comment Share on other sites More sharing options...
damnboy Posted May 2, 2013 Share Posted May 2, 2013 (edited) Gastando las modificaciones que has indicado, cuando escribo sin acentos el comportamiento es el mismo (funcionar bien), pero cuando pongo acentos (y supongo que cualquier otro carácter "extraño") ya no se trunca el mensaje si no que salta a esta parte del código if (!$idOrder || !Validate::isUnsignedId($idOrder)) $this->errors[] = Tools::displayError('The order is no longer valid.'); elseif (empty($msgText)) $this->errors[] = Tools::displayError('The message cannot be blank.'); elseif (!Validate::isMessage($msgText)) $this->errors[] = Tools::displayError('This message is invalid (HTML is not allowed).'); Entra en el elseif que responde con el "The message cannot be blank", es como si al recoger el mensaje y tener caracteres "extraños" diera error y no recoge ningún valor. Y por lo que he podido ver el archivo en concreto es igual en las dos versiones, tanto con instalación nueva, como en actualización o_O Edited May 6, 2013 by damnboy (see edit history) Link to comment Share on other sites More sharing options...
damnboy Posted May 7, 2013 Share Posted May 7, 2013 Bueno por si alguien estaba siguiendo este hilo, seguir comentando que después de encontrar varias "soluciones" no he podido arreglar el problema, voy a poner un listado de lo que he intentado por si a alguien con este problema tiene suerte y le funciona alguna ... 1.- Actualizar de 1.5.3.1 a 1.5.4.1 no funciona, pero si con instalación fresca (el primer día, después me ha vuelto a dejar de funcionar). 2.- Aportación de "jesa", modificar unas pocas líneas de código, aquí en vez de aceptarme el mensaje pero truncarlo a partir del primer carácter "raro", directamente me dice que "no hay mensaje". 3.- Actualizar smarty a la última versión 3.1.13 --> http://www.smarty.net/download 4.- En este hilo, el último comentario habla de sustituir el archivo history.js del tema por el de la versión 1.5.2.0 (en el hilo se incluye el link para descargarlo) http://forge.prestashop.com/browse/PSCFV-5061?page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#issue-tabs Como he comentado a mí sólo me había funcionado la instalación fresca de 1.5.4.1, pero ha vuelto a aparecer el problema ... raro raro ... :/ Link to comment Share on other sites More sharing options...
damnboy Posted May 8, 2013 Share Posted May 8, 2013 (edited) Actualización de situación: He bajado la última 1.4 que había en github, y de ahí he sacado el history.js del tema default y lo he reemplazado en mi 1.5.3.1 local, y problema resuelto! Peeeeero, lo sustituyo en mi 1.5.3.1 real, y no funciona Edit: funciona!! Sí que funciona con el archivo que he dicho de la 1.4, aunque lo que ha sucedido (bastante extraño) es que sólo lo había sustituído en el theme que estoy utilizando ... lo he cambiado también en el original (que no estoy gastando) y entonces sí que funciona ... Os pongo el link de descarga de la versión 1.4, y ya dentro buscáis el archivo en cuestión (no quiero poner sólo el archivo por si alguien no se fia de la versión o por lo que sea): https://github.com/PrestaShop/PrestaShop-1.4/archive/master.zip Edited May 8, 2013 by damnboy (see edit history) Link to comment Share on other sites More sharing options...
damnboy Posted May 8, 2013 Share Posted May 8, 2013 (edited) Bueno he estado mirando el código fuente, y modificando simplemente una llamada (ahora lo pondré) ya funciona, aunque me da que pensar, que en el encabezado del código, para la versión 1.4 pone "2007-2013 PrestaShop" y en el código de la versión 1.5.3.1 "2007-2012 PrestaShop". Además la fecha de creación/modificación de los archivos es para la 1.4 "25/04/2013 6:44" y para la 1.5.3.1 "31/12/2012 15:19". Esto me hace pensar que en la versión 1.4 se actualizó este archivo a su última revisión, y que al crear la nueva versión en el repositorio no partieron de la última versión, o que la 1.5 se venía desarrollando en paralelo con el mantenimiento de la 1.4 ... algo así. Bueno, lo único que habría que modificar sería esta parte del código del archivo history.js (dentro de la carpeta theme/default/js) Versión 1.5.3.1 original ... Cortado ... function sendOrderMessage() { paramString = "ajax=true"; $('#sendOrderMessage').find('input, textarea').each(function(){ paramString += '&' + $(this).attr('name') + '=' + escape($(this).val()); }); ... Cortado ... Modificar ... Cortado ... function sendOrderMessage() { paramString = "ajax=true"; $('#sendOrderMessage').find('input, textarea').each(function(){ paramString += '&' + $(this).attr('name') + '=' + encodeURI($(this).val()); }); ... Cortado ... Ver que he puesto un pequeño fragmento para indentificar mejor en qué función está el "fallo", pero realmente es sólo cambiar la llamada "escape" por "encodeURI". PD: es sólo una pequeña modificación, pero dada la reflexión de arriba sobre las fechas de creación de los archivos, posiblemente sea conveniente sustituir el código completo del archivo de la 1.5.3.1 por el de la 1.4. Alguna opinión? Edited May 8, 2013 by damnboy (see edit history) Link to comment Share on other sites More sharing options...
damnboy Posted May 14, 2013 Share Posted May 14, 2013 Bueno parece ser que el archivo en cuestión en la versión 1.5.4.1 está arreglado, pero por alguna razón con la actualización no se ha actualizado bien. Aun así después de las diversas pruebas creo que NO voy a actualizar a 1.5.4.1, y voy a mantener el archivo reemplazado por mí mismo. Link to comment Share on other sites More sharing options...
Recommended Posts