Como MySQL 5.1 no admite secuencias de 4 bytes UTF-8, necesito reemplazar/eliminar las secuencias de 4 bytes en estas cadenas.Cómo reemplazar/eliminar 4 (+) - caracteres de bytes de una cadena UTF-8 en Java?
Estoy buscando una manera limpia de reemplazar estos caracteres.
Las bibliotecas Apache están reemplazando los caracteres con un signo de interrogación está bien para este caso, aunque el equivalente ASCII sería mejor, por supuesto.
N.B. La entrada proviene de fuentes externas (nombres de correo electrónico) y la actualización de la base de datos no es una solución en este momento.
Estás bromeando. MySQL aún no es compatible con Unicode en este día y edad? Eso es desmesurado. Pretender que soporte Unicode cuando solo puede manejar secuencias de UTF-8 de 1, 2 o 3 bytes es una mentira tan grande como decir que admite Unicode cuando solo admite secuencias ASCII de 1 byte. O bien admite cualquier punto de código Unicode legal o no es compatible con Unicode. Es algo binario. Parece que MySQL no es compatible con Unicode. Por favor dime que esto es una broma. – tchrist
@tchrist: MySQL 5.5.3 y superior admiten UTF-8 adecuado a través del nuevo conjunto de caracteres "utf8mb4" "(http://dev.mysql.com/doc/refman/5.5/en/charset-unicode.html) . Sin embargo, el conjunto de caracteres "utf8" solo admite caracteres multibyte UTF-8 de hasta 3 bytes, según los informes para evitar problemas de replicación entre diferentes versiones de MySQL. "utf8" puede cambiar a un alias para "utf8mb4" en una futura versión de MySQL. – ninjalj
Similar a [esta pregunta] (http://stackoverflow.com/questions/8491431/remove-4-byte-characters-from-a-utf-8-string) excepto que está solicitando una solución en PHP en lugar de Java. –