Nenhuma dessas respostas funcionou para mim. Ao converter para UTF8, quando o codificador encontra um conjunto de bytes que não pode converter em UTF8, isso resultará em um? substituição que resulta em perda de dados. Você precisa usar o 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)
Você pode inspecionar os valores binários no MySQL Workbench. Clique com o botão direito do mouse no campo -> Abrir valor no visualizador-> Binário. Quando convertidos novamente em BINARY, os valores binários devem ser os mesmos que o original.
Como alternativa, você pode simplesmente usar a base-64 que foi criada para esse fim:
SELECT
blobfield,
TO_BASE64(blobfield),
FROM_BASE64(TO_BASE64(blobfield))
SELECT CONVERT(column USING utf8) FROM table;