首页 > 解决方案 > 将特殊字符存储在数据库中,以便在现场正确显示并仍然找到具有相同名称的图像

问题描述

我有一个网站,用户可以在其中更改他们的位置。

我将所有可用的国家/地区存储在数据库中,并将每个国家/地区的图像存储在同一目录中的文件夹中。

但是,有些国家/地区有特殊字符,无法正常显示或找不到图像。

有问题的国家是:

我尝试对它们进行 url 编码,所以它是这样的:%C4%8Cesk%C3%A1+republika

我需要一种将它们存储在数据库中的方法,以便它们在站点上正确显示名称并找到同名的图像。

标签: phpmysqlsql

解决方案


首先,请参阅UTF-8 以了解您需要正确执行的所有操作,以使非 ASCII 字符在您的应用程序中正常工作。

其次,在网络上提供具有非 ASCII 文件名的文件是……棘手的……。1)您需要确保使用百分比编码对这些文件的所有 URL 进行编码,就像您似乎已经做的那样。2) Web 服务器将获取该 URL,将其百分比解码为字节字符串,然后要求底层操作系统/文件系统查找具有该字符串名称的文件。这是棘手的部分:您不会确切知道您的操作系统/文件系统使用什么字节字符串来准确表示该文件。您需要先弄清楚这一点,然后专门对 URL 进行编码,以便将其准确解码为正确的字符串。

当您移动到不同的服务器时,特别是如果您从 Windows 移动到 *NIX 或反之亦然,您可以从头再来一次,因为这些系统的工作方式非常不同。

简而言之,这通常比它的价值更麻烦,您应该使用纯 ASCII 名称存储图像以避免所有这些。特别是对于国家,使用两个字符的国家代码作为图像名称(例如“cz.jpg”)会很有意义。


推荐阅读