¿Consulta MySQL para identificar personajes malos?
Frecuentes
Visto 1,177 veces
0
Tenemos algunas tablas que se configuraron con el conjunto de caracteres latinos en lugar de UTF-8 y permitieron que se ingresaran caracteres incorrectos en las tablas, el culpable habitual es que las personas copien / peguen desde Word o Outlook, que copia esos desagradables caracteres ocultos...
¿Hay alguna consulta que podamos usar para identificar estos caracteres para limpiarlos?
Gracias,
2 Respuestas
0
Supongo que su conjunto de chacater de conexión se configuró en UTF8
cuando llenaste los datos.
MySQL
reemplaza los caracteres no convertibles con ?
(signos de interrogación):
SELECT CONVERT('тест' USING latin1);
----
????
El problema es distinguir los signos de interrogación legítimos de los ilegítimos.
Por lo general, los signos de interrogación al comienzo de una palabra son una mala señal, así que esto:
SELECT *
FROM mytable
WHERE myfield RLIKE '\\?[[:alnum:]]'
debería dar un buen comienzo.
contestado el 22 de mayo de 12 a las 16:05
Nuestro conjunto de caracteres se configuró en latín por error... No hace falta decir que esta tabla es enorme y contiene algunos datos incorrectos. Si cambiamos el conjunto de caracteres durante la noche a UTF8 para la tabla, ¿se reindexará y resolverá el problema? - xXFenomeno22Xx
@xXPhenom22Xx: no, no lo hará. Los valores fuera de rango no se volverán a convertir mágicamente. - quassnoi
0
Probablemente estés notando algo como esto 'bicho'. Lo más probable es que los 'caracteres incorrectos' sean caracteres de control UTF-8 (por ejemplo, \x80). Es posible que pueda identificarlos mediante una consulta como
SELECT bar FROM foo WHERE bar LIKE LOCATE(UNHEX(80), bar)!=0
De ese error vinculado, recomiendan usar type BLOB
para almacenar texto de archivos de Windows:
Use BLOB (con campo de codificación adicional) en lugar de TEXTO si necesita almacenar archivos de Windows (incluso archivos de texto). Mejor que UTF-3 de 8 bytes y sobrecarga de codificación de varios niveles.
Echa un vistazo a esta Q / A (se trata de la codificación de su cliente, también conocida como SET NAMES
)
Respondido 13 Abr '17, 13:04
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas mysql or haz tu propia pregunta.
Bueno, ¿a qué personajes llamas "malos personajes"? - Lion
Nuestros chicos de ventas tienden a copiar / pegar muchos números de teléfono y obtenemos lo siguiente en las tablas 803-644-0100 â - xXPhenom22Xx
O algo así >> 803-644-0100 ‎ - xXPhenom22Xx
@xXPhenom22Xx ¿Podría darnos un poco más de detalles sobre la estructura de su tabla? Por ejemplo, ¿es esta una columna dedicada solo a números de teléfono? Una manera fácil de hacer esto...
DESCRIBE "tablename";
- swasheck