Ninguna de estas respuestas funcionó para mí. Al convertir a UTF8, cuando el codificador encuentra un conjunto de bytes que no puede convertir a UTF8, ¿se generará un? sustitución que resulta en pérdida de datos. Necesita usar UTF16:
SELECT
blobfield,
CONVERT(blobfield USING utf16),
CONVERT(CONVERT(blobfield USING utf16), BINARY),
CAST(blobfield AS CHAR(10000) CHARACTER SET utf16),
CAST(CAST(blobfield AS CHAR(10000) CHARACTER SET utf16) AS BINARY)
Puede inspeccionar los valores binarios en MySQL Workbench. Haga clic derecho en el campo -> Abrir valor en Visor-> Binario. Cuando se vuelve a convertir a BINARY, los valores binarios deben ser los mismos que los del original.
Alternativamente, puede usar base-64 que fue hecho para este propósito:
SELECT
blobfield,
TO_BASE64(blobfield),
FROM_BASE64(TO_BASE64(blobfield))
SELECT CONVERT(column USING utf8) FROM table;