sql >> Base de Datos >  >> RDS >> Mysql

Eliminar el carácter de viñeta Unicode

Tantas cosas pueden salir mal aquí, porque la base de datos, los envíos de formularios y los literales de cadenas de código fuente están todos involucrados. Asumiré que quieres usar UTF-8, porque con cualquier otra codificación típica (CP1252, Latin1) estarás jodido cuando quieras usar json_ o aceptar más de ~200 caracteres diferentes.

Lo primero que debe hacer es eliminar cualquier tipo de código de conversión, etc., que se haya escrito con la intención de intentar solucionar problemas de codificación. Como utf8_encode , htmlentitites , *_replace .. lo que sea.

Codificación fuente.

$str = "· Close up the server";

Al escribir lo anterior, el archivo fuente de PHP debe estar codificado físicamente en UTF-8. Si está en Windows, debe hacerlo o configurarlo explícitamente. UTF-8 no sucede mágicamente en Windows.

Envío de formulario

Cuando el usuario envía un formulario, la carga útil estará en la codificación que haya declarado que tiene la página. Puedes declararlo así:

header("Content-Type: text/html; charset=utf-8");

Pero cualquiera puede enviar bytes arbitrarios a su servidor, por lo que debe validar que la entrada esté en UTF-8 antes de continuar. mb_check_encoding es bueno.

Base de datos

Dado que en este punto sus datos ingresan como UTF-8, sus cadenas de entrada están en UTF-8. Debe especificar esto después de conectarse a la base de datos, especificando una codificación de conexión.

mysql_set_charset("utf8"); //After making the connection, and before any queries
//or $mysqli->set_charset( "utf8");

Esto hace que la base de datos lea su entrada en UTF-8 y codifique su salida en UTF-8. También querrá configurar sus columnas/tablas/bases de datos en UTF-8.

Secuencias de escape Unicode \uxxxx o \uhhhh\ullll o \Uxxxxxxxx no son compatibles con PHP.