$_GET 变量的编码混乱

2023-12-11

我在网站编码方面遇到了很多麻烦。

这是我现在的问题,如果我去analize.php?dialog=árbol哪个代码是:

<?
echo $_GET['dialog'];
echo "sabía";

我得到:

sabía
sabía

我使用的是 ANSI,更改为 UTF-8 会破坏两者。我不明白为什么会发生这种情况,而且上面也没有任何代码。我不关心它们如何显示,因为该文件仅用于从我的数据库获取数据。但我需要做$_GET正确显示,以便我可以将其包含在查询中。

如何才能做到这一点?


您不能在 URL 中发送字符“í”,URL 必须使用 ASCII 字符集的子集。因此 URL 被编码为?dialog=sab%C3%ADa在发送到服务器之前由您的浏览器处理。%C3%AD代表两个字节C3 AD,这是字符“í”的 UTF-8 编码。您可以通过以下方式确认这一点var_dump($_SERVER['QUERY_STRING']);。这由 PHP 自动解码,结果是“sabía”的 UTF-8 字节序列,其中“í”使用两个字节进行编码C3 AD.

您的浏览器正在使用 Windows-1252 或 ISO-8859-1 字符集解释此字节序列。字节C3在此编码中表示“à”,该字节AD代表软连字符并且不可见。

两种可能的解决方案:

  1. 到处使用 UTF-8(推荐!)

    • 将源代码保存为 UTF-8
    • 输出一个标头,强制浏览器将站点解释为 UTF-8:

      header('Content-Type: text/html; charset=utf-8');
      
  2. 转换$_GET使用 Windows-1252/ISO-8859-1(或您想要在站点上使用的任何编码)值mb_convert_encoding or iconv(不建议)

    • 即使在这种情况下,您也应该设置一个标头,向浏览器宣布您正在使用的编码

简而言之,您需要确保在所有地方都使用相同的编码,并向浏览器指定到底是什么编码。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

$_GET 变量的编码混乱 的相关文章

  • 如何使用 phpunit 运行单个测试方法?

    我正在努力运行一个名为testSaveAndDrop在文件中escalation EscalationGroupTest php with phpunit 我尝试了以下组合 phpunit EscalationGroupTest escal
  • MySQL/PDO::quote() 尽管使用 PDO::PARAM_INT 参数,但仍在整数周围加上引号

    无论我传递给什么值 数据类型对 它都会出现 pdo gt quote value type 它总是将其引用为字符串 echo pdo gt quote foo PDO PARAM STR foo as expected echo pdo g
  • PHP MySQL 使用选项/选择 HTML 表单标签进行多重搜索查询

    我正在尝试使用两个搜索字段设置基本的 MySQL LIKE 搜索 我不想拥有它 所以它有多个可选搜索字段 例如if isset POST city isset POST name 我不知道如何用 HTML 来做到这一点
  • PHP严格标准:声明应该兼容

    我有以下类层次结构 class O Base class O extends O Base abstract class A Abstract public function save O Base obj class A extends
  • 是否可以使用 PHP 重定向发送 POST 数据?

    更新 这不是重复的如何使用 PHP 发送 POST 请求 https stackoverflow com questions 5647461 how do i send a post request with php 那里的解决方案对我不起
  • 从 smarty 访问 PHP 文件的变量(本地或全局)

    我有一个 php 文件 其中包含一些本地和全局变量 例如 foo 从此文件中调用 smarty 对象 如何在不更改 PHP 文件的情况下从 smarty 脚本访问 foo Thanks 如果你有一个名为 BASE 的常量变量 并且定义如下
  • Symfony2 Assetic 和 Less Sourcemaps

    我不确定如何破解 assetic less 过滤器以输出源映射文件 我这里指的是LessFilterhttps github com kriswallsmith assetic blob master src Assetic Filter
  • 学说迁移后备

    我们正在使用原则迁移 当迁移包含多个操作并且其中一个操作失败时 通常会出现问题 例如 如果迁移添加了 5 个外键 其中第 5 个失败 而字段长度不同 则修复字段错误并重新生成迁移不会not修复整个问题 而现在出现一个与 4 个密钥已存在有关
  • 从 .phar 存档中提取文件

    对于 Phar 文件 我完全错过了一些东西 我正在安装一个需要 phpunit pdepend 和其他依赖项的项目 我将它们作为 phar 文件获取 但是 我无法使用命令行工具 php 命令 从中提取文件 我用谷歌搜索了这个问题 但没有发现
  • PHP 在输入流中使用 fwrite 和 fread

    我正在寻找将 PHP 输入流的内容写入磁盘的最有效方法 而不使用授予 PHP 脚本的大量内存 例如 如果可以上传的最大文件大小为 1 GB 但 PHP 只有 32 MB 内存 define MAX FILE LEN 1073741824 1
  • 在 PHP 中撤销 Google 访问令牌

    正如标题所示 我想以编程方式撤销授予的访问令牌 即在 PHP 中 我发现这个他们的网站 https developers google com identity protocols OAuth2WebServer tokenrevoke 但
  • 在 PHP 中使用 phpseclib 时出现 RSA 问题

    我正在尝试在 phpseclib 中使用 RSA 实现 我认为在函数中执行一次代码并重新使用该函数会更容易 当我尝试向代码发送短信时 我收到一条错误消息 提示 解密错误 测试还让我意识到每次代码运行时密文都是不同的 所以我显然在那里做错了什
  • 覆盖控制器 Symfony 3.4/4.0

    我目前正在尝试覆盖 FOSUserBundle 中的控制器 在新的文档中 https symfony com doc 3 4 bundles override html https symfony com doc 3 4 bundles o
  • Woocommerce 结账自定义选择字段

    我有以下功能 将选择列表添加到 woo commerce 结账表单中 woocommerce form field airport pickup array type gt select class gt array airport pic
  • 在 apache docker 容器中运行虚拟主机

    我在同一个 apache 容器中有两个 php 应用程序 我试图在端口上运行其中一个应用程序 因为它需要通过根域而不是子文件夹进行访问 我想在端口 8060 上运行应用程序 我尝试使用 apache 虚拟主机执行此操作 但它不会加载页面 h
  • 使用 Ajax.Request 将 JSON 从浏览器传递到 PHP 的最佳方法

    您好 我有一个 JSON 对象 它是一个二维数组 我需要使用 Ajax Request 将其传递给 PHP 我知道的唯一方法 现在我使用js函数手动序列化我的数组 并获取以下格式的数据 s 1 d 3 4等 我的问题是 有没有办法更直接 有
  • 表单提交后如何保留选择字段中的选定值?

    我有一个用于将票证上传到数据库的主页 我有一个选择字段 我想保留用户在提交表单之前选择的值 但它没有发生 这是我选择字段的代码
  • 内部 while 循环不工作

    这是我项目网页上的代码片段 这里我想显示用户选择的类别 然后想显示属于该类别的主题 在那里 用户可以拥有多个类别 这没有问题 我可以在第一个 while 循环中打印所有这些类别 问题是当我尝试打印主题时 结果只显示一行 但每个类别中有更多主
  • 对具有混合类型值的数组进行数字排序

    我有一个像这样的混合数组 fruits array lemon Lemon 20 banana apple 121 40 50 然后申请sort 其功能如下 sort fruits SORT NUMERIC foreach fruits a
  • 无法显示 Laravel 欢迎页面

    我的服务器位于 DigitalOcean 云上 我正在使用 Ubuntu 和 Apache Web 服务器 我的家用计算机运行的是 Windows 7 我使用 putty 作为终端 遵循所有指示https laracasts com ser

随机推荐

  • 使用 Excel Power Query 使用的 Web API OData 服务进行 WAAD 身份验证

    我使用 OWIN 中间件创建了一个 WebAPI OData 3 0 Web 服务 该服务配置为使用 Windows Azure Active Directory 进行身份验证 ODataController 标有 Authorize 属性
  • 从同一个表中触发选择

    我想问一个关于触发器的问题 假设我有一个表 T 并且在更新之前需要一个触发器 但是 我有一个问题 我需要使用触发器中 T 的其他行来检查条件 我的问题是 哪些 RDBMS 支持此功能 我可以在哪里编写在触发器触发的同一个表上执行选择的触发器
  • 为什么 R 中 "" == true

    我刚刚开始学习 R 在我的第一个作业中 我面临一个问题 我需要比较一堆变量 在这样做时 我应该在比较两个变量时得到错误 不仅当它们不相等时 而且当它们的类型不一样 例如 7 7 给出 true 应该是 false 目前 我正在做同样的事情
  • Java Servlet 中的 PostgreSQL 连接用于从数据库检索信息。出现错误

    我很难完成这项工作 我可以毫无问题地连接到数据库 但是我无法让它显示 html 页面 它不运行 import java io import java sql import java text import java util import
  • Hibernate+SQLite+Netbeans

    有人可以告诉我在哪里可以找到将 hibernate 连接到 sqlite 的驱动程序和方言文件吗 由于SQLite数据库被广泛使用 并且Java中的Hibernate 不是NHibernate 对它的支持不够好 因此将SQLite与Hibe
  • 使用 MATLAB 比较文件

    我想知道如何比较两个文件 逐行 xml m txt 等 使用 MATLAB file1 toto xml file2 titi xml 我正在寻找一个 MATLAB 函数 通过命令行 它返回 true false 或 diff 列表 您可以
  • 正则表达式删除所有样式,但保留颜色和背景颜色(如果存在)

    我仍然无法用心使用正则表达式 因此无法找到最终的解决方案来使用 RegEx 和 Javascript 去除 中的所有样式 但是保留颜色和背景颜色 如果存在 我发现了什么 1 使用正则表达式删除完整的 style 元素 htmlString
  • 如何在一个 php include 文件中包含多个页面内容?

    我想知道如何将各种元素 页眉 页脚 导航 包含在一个 php 文件中以包含在各个页面上 而不是创建多个单独调用的 php 文件 在我的包含文件中 我有以下代码 输出到运行 php 的 html 页面我有 有没有办法包含特定的 div 或
  • .gitignore 忽略所有文件,然后递归允许 *.foo

    已经有几个与此类似的问题 但没有一个答案对我有用 我想忽略存储库下面的文件夹中的所有内容 除了带有 foo 的文件 如果有人想知道如何证明这一点 我实际上正在为我所有的 Logic 项目创建一个 git 存储库 Mac 上的音乐软件 但我只
  • 使用 GroundOverlay 的脉冲动画

    我需要通过脉冲动画显示位置 A 和位置 B 我可以使用下面的代码来实现这一点 但我面临的问题是 当缩放级别发生变化时 GroundOverlay 也会改变其大小 如果位置 A 和 B 彼此靠近 即地图放大级别较高 则脉冲半径太大 当我缩小时
  • 在负载平衡环境中获取 IIS 服务器变量的客户端值

    我有一个intranetASP NET Web 应用程序 我需要在其中获取客户端计算机的 IP 我通过以下代码执行此操作 HttpContext Current Request ServerVariables Item REMOTE HOS
  • 快照视图和动态视图有什么区别?

    我在 ClearCase 中看到有一个快照视图和一个动态视图 这些类型的视图之间有什么区别 我假设只有两种类型的视图 以及什么时候使用它们合适 快照视图基于本地文件系统 就像 Subversion 中的工作空间 您可以将文件加载到硬盘上的任
  • 为什么对派生类中的影子非虚拟成员函数的调用不调用基类成员函数?

    让我们在 Visual C 2010 中假设这个场景 include
  • 如果循环后没有匹配项,如何只得到一个答案

    我的代码在数组中有一个 for 循环 并且有 if 语句 如果没有匹配项 我只想得到一个答案 for int i 0 i lt arr Length i if arr i GetSomeValue gt 1 i GetSomeValue l
  • 如何检查 numpy 数组是否为空?

    如何检查 numpy 数组是否为空 我使用了以下代码 但如果数组包含零 则会失败 if not self Definition all 这是解决方案吗 if self Definition array 您可以随时查看 size属性 这是定义
  • 使用 2016 Facebook SDK 使页面访问令牌永不过期?

    我们正在构建的应用程序是一款 iOS 和 Android 移动应用程序 它将高中生与非营利组织配对 以帮助管理他们的 Facebook 页面 我们将每个学生分配到一个非营利组织 让他们成为 Facebook 页面的管理员 并允许他们代表该组
  • 如何在 Firestore (SWIFT) 中使用 FieldValue 减少值?

    阅读博客post和文档 我发现我们可以使用增加一个值FieldValue但我找不到减量函数 document fitness teams Team 1 updateData step counter FieldValue decrement
  • 查找当前流是否包含 ClearCase 中的基线

    假设我有一个名为 A1 的基线 然后我想看看是否有任何方法可以让我在同一个项目的任何地方进入另一个流 看看我的流中是否有 A1 IE 我的流中是否有 A1 中所做的代码更改 有什么快速的方法可以做到这一点吗 先感谢您 ClearCase 基
  • VBScript循环遍历文件夹中的所有文件

    我有在单个文件上执行该过程的代码 任何人都可以更改此脚本 以便它循环遍历目录 H Letter Display Letters 中文件类型为 的所有文件 LTR 并保存它们全部 Const ForReading 1 Const ForWri
  • $_GET 变量的编码混乱

    我在网站编码方面遇到了很多麻烦 这是我现在的问题 如果我去analize php dialog rbol哪个代码是