MySQL utf8 is a legacy, nonstandard UTF-8 implementation limited to three-byte characters. It cannot encode many Unicode characters or emojis; utf8mb4 was added for full four-byte support while the old name remained for compatibility. section 10.3
Migration failure
A MySQL dump imported into PostgreSQL can fail with invalid UTF8 errors. A byte such as 0xe9 may actually be Latin 1 data from tables that retained an older latin1 default, while four-byte characters expose MySQL utf8's limitation. section 10.3
Treat encoding conversion as a migration concern:
- Identify the actual table encoding rather than trusting the server version or current default. section 10.3
