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

Almacenar caracteres especiales en la base de datos de tal manera que se muestren correctamente en el sitio y aún encuentren una imagen con el mismo nombre

En primer lugar, consulte UTF-8 completo para conocer todas las cosas que debe hacer correctamente para que los caracteres que no son ASCII funcionen en su aplicación en general.

En segundo lugar, es... complicado... servir archivos con nombres de archivo que no son ASCII a través de la web. 1) Debe asegurarse de codificar todas las URL para estos archivos con codificación porcentual, como parece que ya lo hace. 2) El servidor web tomará esa URL, la decodificará en porcentaje a una cadena de bytes y luego le pedirá al sistema operativo/archivo subyacente que busque un archivo con un nombre con esa cadena. Esta es la parte difícil:no sabrá exactamente qué cadena de bytes usa su sistema operativo/sistema de archivos para representar ese archivo exactamente. Primero debe averiguarlo y luego codificar la URL específicamente para que se decodifique exactamente en la cadena correcta.

Y cuando te mudas a un servidor diferente, especialmente si te mudas de Windows a *NIX o viceversa, puedes hacerlo de nuevo ya que esos sistemas hacen las cosas de manera muy diferente.

En pocas palabras, a menudo es más complicado de lo que vale, y debe almacenar sus imágenes con nombres solo en ASCII para evitar todo eso. Específicamente para los países, tendría mucho sentido usar los códigos de país de dos caracteres para el nombre de la imagen (por ejemplo, "cz.jpg").