Internet Explorer 在查询字符串中存在特殊字符问题

2023-11-23

这不是一个new问题

这里有很多关于 IE 在处理查询字符串中的特殊字符时遇到问题的问题。在所有情况下都是相同的:Chrome、Firefox、Safari(每个)都可以正确处理 UTF-8 编码的 URL,几乎所有这些甚至都可以处理 IRI 未编码到 URL 中的情况。但IE却坚持让开发者日子不好过。

因为我自己也遇到过这个问题,并且为此做了很多工作。在我看来,IE 出于某种原因坚持将 UTF-8 编码的 URL 解码为 ISO-8859-1,然后再将其发送到服务器。

My case

我是丹麦居民,因此我必须使用丹麦语字母 æøå。 在很多情况下,我想将参数从我的视图发送到某些 C# 方法中。特殊字符经常出现的地方有两个例子:

  1. 搜寻中
  2. 下载文件的文件名规范

假设一个丹麦人想要搜索丹麦语单词“æblegrød”(特殊的苹果派)。在 Chrome 和 Firefox 中,如果我只向浏览器提供 IRI:

http://example.com/Search/QuickSearch?searchQuery=æblegrød

发送到服务器的查询将如下所示:

http://example.com/Search/QuickSearch?searchQuery=%C3%A6blegr%C3%B8d

但在 Internet Explorer 中,它看起来像这样:

http://example.com/Search/QuickSearch?searchQuery=æblegrød

现在很容易看出问题所在。 Firefox 和 Chrome 对 URL 进行 URL 编码

...不是 %HH 的 ASCII 字母或数字的每个字节,其中 HH 是 字节的十六进制值

http://www.w3.org/International/O-URL-code.html

相反,Internet Exlorer 对字符串进行直接 UTF-8 编码,结果是“Óblegråd”。这与您采用 UTF-8 字符串并将其解码为 ISO-8859-1 的最终结果相同,这是巧合吗?

我尝试过一些事情

由于 Internet Explorer 具有“以 UTF-8 形式发送 URL 路径”的选项,因此我尝试禁用该选项。什么也改变不了。

由于 IE 必须处理“searchQuery=æblegrød”时出错,我尝试在将 IRI 传递给浏览器之前对其进行编码。导致所有浏览器都可以使用以下 URL:

http://example.com/Search/QuickSearch?searchQuery=%C3%A6blegr%C3%B8d

然而 IE 并不关心,我在网络日志中看到的仍然是 URL

http://example.com/Search/QuickSearch?searchQuery=æblegrød

正在发送到服务器。

我的配置是这样的:

  1. 文件保存为UTF-8
  2. 我设置了元标记:

    <meta charset="UTF-8">
    
  3. IE 以 UTF-8 形式发送 URL 路径(也将 IE 设置为 对 Intranet 查询字符串执行此操作)

  4. 全球化设置为 UTF-8

    <globalization          
        uiCulture="da-DK"
        culture="da-Dk"
    
        fileEncoding="utf-8"
        responseEncoding="utf-8"
        requestEncoding="utf-8"
        responseHeaderEncoding="utf-8" />
    

我已经没有想法了,我不知道我做错了什么。我倾向于 IE 造成严重破坏,但我真的不知道这是否是我在项目中设置错误的东西。


未来人们遇到这个问题的答案。

经过一番研究,我得出的结论是,我唯一能做的就是对所有 URL 进行编码,然后使用内容处置 (在这篇SO帖子的帮助下)以使其适用于不同的浏览器。该解决方案并不完美,仍然存在一些缺陷,但这是我迄今为止找到的最好的方法。

在我的所有案例中,链接都是用 JS 构建的,所以编码URI组件是我对 URL 进行编码的首选方法。

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

Internet Explorer 在查询字符串中存在特殊字符问题 的相关文章

  • 如何在不发送电子邮件的情况下检查 smtp 服务器? [复制]

    这个问题在这里已经有答案了 我有一个 Web 应用程序 用户可以设置 SMTP 服务器信息 服务器 主机 SMTP 端口 用户名 密码 电子邮件地址 使用的 SSL 当用户设置信息时我需要验证服务器而不发送电子邮件并检查smtp信息是否有效
  • 为什么自定义类型变量不保存值MVC

    我正在尝试使用 MVC 5 构建一个网站 我有一个包含 3 个变量的控制器类 public class WorkerController Controller public ViewModel viewModel new ViewModel
  • 即使在 GC Collect 和 WaitForPendingFinalizers 之后,窗口对象在关闭后也未释放?

    这是一个简单的测试应用程序 可帮助了解 WPF 内存使用情况 我想了解的关键是为什么MainWindow即使在关闭并等待 GC 完成之后 仍然被引用并且它的内存没有被释放 参见下面的代码清单 文本 MainWindow Finalizer
  • 在调试模式下单步执行时跳过方法的属性

    是否有一个属性可以在方法上使用 以便在调试模式下单步执行某些代码时 调试器保持在方法的外部 DebuggerStepThrough docs https learn microsoft com en us dotnet api system
  • C# .Net Serial DataReceived 事件响应对于高速数据来说太慢

    我已经设置了一个 SerialDataReceivedEventHandler 并在 VS2008 Express 中使用基于表单的程序 我的串口设置如下 115200 8N1 Dtr 和 Rts 已启用 接收字节阈值 1 我有一个通过蓝牙
  • 编码的 nsdata utf8 json,在 ios 中带有重音字符

    我向网络服务器发出一个发布请求 该服务器用 JSON 回答我 这是响应的标头 Cache Control private Content Length 826 Content Type application json charset ut
  • System.Drawing.Image.Save 抛出ExternalException:GDI 中发生一般错误

    我有一个函数 它需要一个位图 复制它的一部分并将其保存为 8bpp tiff 结果图像的文件名是唯一的并且文件不存在 程序有权写入目标文件夹 void CropImage Bitmap map Bitmap croped new Bitma
  • 运行 t4 脚本作为 resx 文件的自定义工具

    我有一个资源文件MyResource resx 我想改变MyResource Designer cs文件生成 我有一个 t4 脚本 它接受 resx 文件作为输入并给出结果转换 但是 我必须手动运行此 t4 才能使其工作 我看到 resx
  • 使用 javascript 禁用按钮:FF 与 IE

    我有一排按钮 它们都会创建一个我想在新选项卡中打开的 pdf 文件 这样按钮页面就会保持在顶部 并且 pdf 会打开以进行打印 为了防止单击按钮两次 我禁用该按钮 如下所示 我使用 python
  • MySql 最后插入 ID,连接器 .net

    我正在使用 MySql Connector net 我需要获取最后一个查询生成的插入 id 现在 我假设返回值是MySqlHelper ExecuteNonQuery应该是最后一个插入id 但它只返回1 我正在使用的代码是 int inse
  • EasyNetQ 模型关闭

    我使用 EasyNetQ 实现了一个简单的 RabbitMQ 客户端 连接后 我收到一条通知 队列模型关闭 这是我的代码 var bus RabbitHutch CreateBus String Format host 0 hostName
  • 当用户告诉浏览器“刷新”时,是否应该填写 HTTP_REFERER?

    我正在尝试使用引用标头检查作为深度防御 即多种安全技术之一 但请注意仅依赖于任何一种技术 有时 MSIE 似乎不包含刷新时的引荐来源网址 这是预期的行为吗 无论如何 我是否可以检测刷新 以便我知道缺少引荐来源网址是可以的 是的 我知道引荐来
  • 同一服务器上的多个.NET版本

    所以我一直都知道在一台计算机 客户端或服务器 上运行多个版本的 NET 框架是可以的 这个问题 https stackoverflow com questions 407306 running many versions of net on
  • 在 Internet Explorer 中使用什么来监视 jscript 内存使用情况

    我们正在调试 GWT 应用程序 在 Firefox 中运行正常 在 IE6 0 中开始运行正常 但一段时间后 它就会崩溃并开始爬行 经过一些测试后 我们怀疑存在一些内存问题 使用了太多内存 内存泄漏等 除了使用taskmanager和pro
  • 在 C# 中使用通配符解析相对路径

    在 C 中 如果我有一个目录路径和一个带通配符的相对文件路径 例如 c foo bar and blah cpp 有没有一种简单的方法来获取绝对文件路径列表 例如 c foo blah a cpp c foo blah b cpp 背景 有
  • 调整图像的亮度、对比度和伽玛值

    在 NET 中调整图像的亮度 对比度和伽玛值的简单方法是什么 c and gdi have a simple way to control the colors that are drawn It s basically a ColorMa
  • “你好世界!!”在 .NET 4 中生成 3500 个页面错误

    我正在运行 Windows Vista 和 Visual Studio 2010 使用 NET 4 2 GB RAM 和大约 800 MB 可用空间 我创建了一个 Windows 窗体应用程序 但没有向其中添加任何代码 只需在发布模式下编译
  • Java:如何从转义的 URL 获取文件?

    我收到了一个定位本地文件的 URL 事实上我收到的 URL 不在我的控制范围内 URL 按照 RFC2396 中的定义进行有效转义 如何将其转换为 Java File 对象 有趣的是 URL getFile 方法返回一个字符串 而不是文件
  • 为什么我的交互式图像仅在 Internet Explorer 上出现故障?

    我的问题 我为自己制作了一个图像地图 交互式图像 它在 Chrome safari 和 Firefox 上完美运行 然而 当我在可怕的互联网浏览器上尝试它时 它真的很糟糕 这些小点应该扩展到更大的盒子中 在互联网浏览器上它要么不起作用 要么
  • C# xml序列化必填字段

    我需要将一些字段标记为需要写入 XML 文件 但没有成功 我有一个包含约 30 个属性的配置类 这就是为什么我不能像这样封装所有属性 public string SomeProp get return someProp set if som

随机推荐

  • Pylint 忽略特定名称[重复]

    这个问题在这里已经有答案了 我有 pylint 问题 即有时它会对某些变量 类 模块等重复相同的消息 但我找不到解决方法 我想说的是 pylint 不要使用某些选项或 rcfile 指令检查 此模块 模块 ZZZ 中的 消息 XXX 任何消
  • 有关如何将 SwipeRefreshLayout 与 ListView 结合使用的简单示例

    有人有关于如何将 SwipeRefreshLayout 与 ListView 一起使用的简单示例吗 这是我的情况 我有一个类 SynchDogs 从服务器提取数据 所以该类作为我的适配器的源 我想使用 SwipeRefreshLayout
  • -viewDidLoad 未在子类 UIViewController 中调用

    请耐心等待 我还在学习 Cocoa Touch 其他 viewDidLoad 未被调用问题与我的问题无关 我进行了搜索 I have FooViewController a UIViewController子类 FooViewControl
  • Web API 和 MVC 异常处理

    我们目前正在将 Web 表单系统重新开发为 Web API 和 MVC 这对我们来说是新技术 到目前为止 一切似乎都很好 但是我们正在努力将错误从 Web API 应用程序发送回 MVC 应用程序 我们意识到我们需要捕获任何异常并将这些异常
  • 在 pandas DataFrame/Series 中快速选择时间间隔

    我的问题是我想过滤 DataFrame 以仅包含间隔内的时间 开始 结束 如果不关心这一天 我只想过滤每天的开始和结束时间 我有一个解决方案 但速度很慢 所以我的问题是是否有一种更快的方法来进行基于时间的过滤 Example import
  • TestNG 使用多个 DataProvider 和单个测试方法

    我一直在寻找一种在我的测试方法中使用多个 DataProvider 的方法 我的场景如下 假设我们有一个 DataProvider 类 Test public class ExampleDataProvider Returns the li
  • 通过解释器突变混淆 python 字节码

    事实上 Dropbox 做得非常好 他们能够保护用 python 制作的桌面应用程序 我对此进行了很多研究 但没有比混淆更好的解决方案 这不是很安全的方法 您最终会看到您的代码上传到某个地方 我听了一个会议乔瓦尼 巴霍 PyInstalle
  • 如何实现方法调配?

    我正在尝试使用 SIMBL 修改程序的行为 我没有它的源代码 我使用类转储并发现我需要覆盖实例方法 该方法位于称为控制器的类中 我需要做的就是获取参数 arg1 就这样了 也许 NSLog 或发布通知 我读到了 Objective C 中的
  • 如何设置我的 gradle 最终版本 apk

    早些时候我的 gradle 是这样的 这当然是不正确的 apply plugin android android compileSdkVersion 19 buildToolsVersion 19 0 3 defaultConfig min
  • 如何将函数应用于 MATLAB 中矩阵的每一行/列?

    您可以将函数应用于向量中的每个项目 例如 v 1 或者您可以使用该功能arrayfun 如何在不使用 for 循环的情况下对矩阵的每一行 列执行此操作 许多内置操作 例如sum and prod已经能够跨行或列进行操作 因此您可以重构您正在
  • 如何在Python中处理JSON和Windows路径?

    我正在尝试运行一个 Python 包 它读取 JSON 文件 配置文件 以获取信息 问题是我需要将一些 JSON 文件编辑到包含的目录中 该脚本的创建者使用的是 Linux 内核 因此他使用的是 Linux 路径名 而我使用的是 Windo
  • DISTINCT 仅适用于一列

    假设我有以下查询 SELECT ID Email ProductName ProductModel FROM Products 如何修改它以便它不返回重复的电子邮件 换句话说 当多行包含相同的电子邮件时 我希望结果仅包含其中一行 最好是最后
  • 计算“组特征”,无需 ddply 和 merge

    我想知道是否有比我通常采用的方法更直接的方法来计算某种类型的变量 下面的例子可能最好地解释了这一点 我有一个包含 2 列的数据框 水果以及水果是否腐烂 我想为每一行添加例如同一类别的水果腐烂的百分比 例如 有 4 个苹果条目 其中 2 个已
  • 如何让 ArrayList 和 Scanner 配合得很好?

    import java util public class CyclicShiftApp public static void main String args Scanner scan new Scanner System in Arra
  • 将类名存储在类变量中而不输入类名?

    在Python类的实例方法中 我知道我们可以通过以下方式获取类名self class name 但是 我想将类的名称存储在类变量中 而不对类的名称进行编码 我知道我可以这样做来将类的名称放入类变量中 class MyClass object
  • 从ajax和ActionResult下载文件

    我想使用 ajax 和 ActionResult 在浏览器上下载文件 文件被下载并从我的 ActionResult 返回 我看到 Http 查询正常 并看到响应正文中的数据 问题是该文件不建议保存在浏览器中 一切看起来都不错 我在教程和论坛
  • 如何使用 Docker 在 HTTPS(SSL 连接)上部署 Next.js 应用程序?

    我按照 Next js 文档中的说明使用 Docker 启动服务器 https nextjs org docs deployment docker image 使用 http 加载站点可以工作 但 https 返回 SSL 协议错误 我详细
  • Delphi SAPI 文本转语音

    首先 这不是重复的德尔福和SAPI 我对 SAPI in Delphi 主题有一个具体问题 我使用了 Delphi 2009 中出色的导入类型库指南来在组件选项板中获取 TspVoice 组件 这很好用 和 var SpVoice TSpV
  • 如何将方法标记为强制方法?

    假设您使用构建器模式创建一个名为 Person 的类 并假设该 Builder 类包含方法body head arms 而且当然build 然后你考虑方法head and build 该类的用户必须这样做 我们希望以某种方式将这些方法标记为
  • Internet Explorer 在查询字符串中存在特殊字符问题

    这不是一个new问题 这里有很多关于 IE 在处理查询字符串中的特殊字符时遇到问题的问题 在所有情况下都是相同的 Chrome Firefox Safari 每个 都可以正确处理 UTF 8 编码的 URL 几乎所有这些甚至都可以处理 IR