Không có câu trả lời nào trong số này làm việc cho tôi. Khi chuyển đổi sang UTF8, khi bộ mã hóa gặp một tập hợp byte, nó không thể chuyển đổi thành UTF8, nó sẽ dẫn đến một? thay thế dẫn đến mất dữ liệu. Bạn cần sử dụng 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)
Bạn có thể kiểm tra các giá trị nhị phân trong MySQL Workbench. Nhấp chuột phải vào trường -> Mở giá trị trong Trình xem-> Nhị phân. Khi được chuyển đổi trở lại BINary, các giá trị nhị phân phải giống với giá trị gốc.
Ngoài ra, bạn chỉ có thể sử dụng cơ sở 64 được tạo ra cho mục đích này:
SELECT
blobfield,
TO_BASE64(blobfield),
FROM_BASE64(TO_BASE64(blobfield))
SELECT CONVERT(column USING utf8) FROM table;