Re: Caractertes raros en Shell de MySQL
El problema es que el cliente de MySQL utiliza las funciones de caracteres de 8 bits de la librería estándar de C. En última instancia, esas funciones llaman a ReadConsoleA, WriteConsoleA, etc. Eso en Windows significa usar tu local de 8 bits, mal llamada "ANSI", que en nuestro caso es Windows-1252, un juego de caracteres de 8 bits obsoleto. Tienes la base de datos en UTF-8, lo cual debes hacer, pero el cliente sólo trabajará en CP1252, y no podrá ver o enviar correctamente caracteres fuera de los 128 primeros (que son iguales en casi todas las tablas de caracteres y codificaciones).
La consola de Win32 soporta Unicode, y siempre podrás escribir caracteres Unicode cuando lees de ella, pero sólo si lees con la familia de funciones de UTF-16, ReadConsoleW, WriteConsoleW, etc. o si defines UNICODE y utilizas cadenas de 16 bits.
Lo que hace el cliente de MySQL funciona bien en Linux si tu juego y codificación de caracteres local es UTF-8 (casi siempre hoy en día, no debería ser nunca de otra manera), y la base de datos es UTF-8. Mi consejo es que uses Linux.
Otra posibilidad es esperar a que tenga tiempo de publicar mi cliente hecho en Python, que utiliza a mano las funciones de Win32 para soportar Unicode también en Windows.
Un saludo,
Miguel Pérez
Afina Sistemas - Partner de MySQL en España