Tidak satu pun dari jawaban ini yang berhasil untuk saya. Ketika mengkonversi ke UTF8, ketika encoder menemukan satu set byte yang tidak dapat dikonversi ke UTF8 itu akan menghasilkan? substitusi yang menyebabkan hilangnya data. Anda perlu menggunakan 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)
Anda dapat memeriksa nilai-nilai biner di MySQL Workbench. Klik kanan pada bidang -> Nilai Terbuka di Penampil-> Biner. Ketika dikonversi kembali ke BINARY, nilai binernya harus sama dengan aslinya.
Atau, Anda bisa menggunakan basis-64 yang dibuat untuk tujuan ini:
SELECT
blobfield,
TO_BASE64(blobfield),
FROM_BASE64(TO_BASE64(blobfield))
SELECT CONVERT(column USING utf8) FROM table;