【问题标题】:How to use special characters in GET requests?如何在 GET 请求中使用特殊字符?
【发布时间】:2021-03-29 22:08:58
【问题描述】:

我为我的网站使用网络服务器。它有一个包含所有数据的MySql 数据库,Charset 设置为UTF-8,所以数据库端的一切都是正确的,而且在网络服务器上,我有一些图像,其名称分别为MySQL 内容.
例如MySql 中的一个字段是Caffè,而我在另一个文件夹中还有一个名为Caffè.jpg 的图像。

现在,我使用PHP 构建页面,并且我已经通过这样做确保内容被解释为UTF-8header("Content-Type: text/html; charset=ISO-8859-1");
所以看看这张图片:

如您所见,HTML 页面具有正确的文件名称:Caffè.jpg,但当浏览器使用 GET 请求图像时,è 的解释方式不正确。
这是否意味着 GET 请求不接受这些类型的字符? 这就是我获取文件名的方式:

<img src=\"./STRUCTURE/IMAGES/".$datas[$i]['name'].".jpg\" class=\"card_image\">

这可能很有用。 提前致谢。

【问题讨论】:

  • "我已经通过这样做确保内容被解释为 UTF-8: header("Content-Type: text/html; charset=ISO-8859-1?" — I请原谅?
  • @ÁlvaroGonzález PHP 文件正在构建 HTML 页面,因为它正在从数据库中获取所有必要的信息。由于我希望将内容解释为 UTF-8,因此我将行 header("Content-Type: text/html; charset=ISO-8859-1) 添加为 PHP 文件中的第一行。
  • 如果要UTF-8,为什么要声明ISO-8859-1? ISO-8859-1 在这里扮演什么角色?就像“为了确保它被解释为英语,我添加了 language=French”。
  • ISO-8859-1 少于 255 个字符。 UTF-8 拥有完整的 143,859 个字符的 Unicode 目录。无论您发现什么文章都说这很混乱。
  • 您在其他地方使用过 ISO-8859-1 吗? UTF-8 是您从 2020 年开始需要使用的一切,但您需要在整个过程中使用它。另外,C3A8è 的正确 UTF-8 编码,完全正确。

标签: php html mysql utf-8


【解决方案1】:

链接应该是 url 编码的,在你的情况下:<img src=\"./STRUCTURE/IMAGES/".rawurlencode($datas[$i]['name']).".jpg\" class=\"card_image\">

如果这不起作用,请尝试将 mysql 数据转换为 UTF-8,然后再将它们传递给 rawulrencode - 您可以使用 iconvmb_convert_encoding 执行此操作

您的网络服务器应该处理反向翻译。

参考:https://www.w3schools.com/tags/ref_urlencode.ASP

【讨论】:

  • 我已经尝试了您的解决方案和许多其他解决方案,但我根本不工作。有趣,因为在我的本地服务器上它运行良好,而在公共服务器上却不行。您是否需要更多详细信息才能了解我的情况?无论如何,感谢您的宝贵时间。
  • @JasperHoward 当你这样说时,你的GET url Caff%C3%A8.jpg 似乎也是有效的,那么也许我们正在错误的地方寻找错误。例如,如果您的“公共”网络服务器使用 Apache,则错误可能在这里:apache url / filename with special characters 所以,也许,检查该服务器上的文件名编码。
猜你喜欢
  • 2013-09-14
  • 1970-01-01
  • 2021-11-03
  • 2012-01-16
  • 1970-01-01
  • 2020-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多