troubleshooting

  

HOWTO: 解决无法打开 Excel 表格中 URL 的故障问题

  

        最近遇到一个比较典型的故障问题,排错过程跌宕起伏,事后感觉挺有代表性,决定拿出来与大家分享。故障环境是一台 Windows 10 + Office 2016 的加域设备。用户打开一个 Excel 文档,表中有一列文本包含 URL 超链接,可通过点击该文本启动 IE 去访问指定的网址。但是实际在点击链接后会提示“无法打开http://……无法下载您要求的信息。”

  

image

  

        对其他链接进行了尝试,均提示相同的警告,但是手工新增加一个文本链接,却访问正常。之后将故障网址复制出来,粘贴到 IE 中再次访问,发现能够到达对方的服务器,但返回了“403 Forbidden”,可是将网址复制到其他浏览器,如:Edge、Chrome 中访问却是正常的。再回顾 IE 访问故障界面,发现地址栏中的中文路径在403反馈中显示的是一段乱码。说明故障的原因是由网址中包含的中文字符导致的,通常这类问题是由字符编码错误引发的。

  

image

  

        为了求证错误,gOxiA 对正常和异常访问的 Web 数据进行了抓包,以做进一步的分析。如下结果,分析发现中文字符确实被进行了编码,但是异常访问的 Web 数据中所包含的第二次 URL 请求出现了变化,编码字符有异常,前后不符。

  
      
  • 正常访问:
  

image

  
      
  • 异常访问:
  

image

  

        另外比较奇怪的是为什么会发起两次 HTTP 请求呢?!对两次访问的发起代理程序进行了分析,发现用户在 Excel 中点击 URL 时,Excel 发起了 HTTP 请求,且提交的 URL 编码是正确的。

  

image

  

        但是,在传递给 IE 后,却被 IE 重新编码成了错误的 URL 。

  

image

  

        至此,可以判定是因为 IE 提交的含中文字符 URL 的编码问题引发的此次故障。而中文编码问题通常出在 Windows 和 Linux 系统之间,多数原因是 Windows 提供的中文编码默认为 GB2312,而 Linux 使用的是 UTF-8,所以需要强制 IE 使用 UTF-8 来提交 URL,即可解决该问题。

  

        但是,在执行配置操作时发现,IE 的“以 UTF-8 形式发送 URL 路径”选项被锁定了,无法修改!且明确提示“某些设置由系统管理员进行管理”。做进一步分析,确认系公司域下发的组策略所谓,不知道为什么要禁用这个选项,实属奇葩!

  

image

  

        通知 AD 运维团队修改 GPO 不切实际,只能另寻出路!于是对 Excel 中点击 URL 的操作进行了抓包,筛选出来4000多行数据,“功夫不负有心人”在位于“HKCU\Software\Microsoft\Office\16.0\Common\Internet”下发现了一个有价值的注册表键“Encoding”,既然隶属于 Office,也就意味着可以通过 Office 选项对文档的编码进行定义。

  

image

  

image

  

        最后,在 Excel 高级选项的 Web 选项中找到了切换文档编码的设置。即,进入 Excel 选项,依次点击“文件-选项-高级”,在右侧窗口中向下拖动至“常规”,找到“Web选项”,进入。

  

image

  

        在“Web选项”下,切换至“编码”选项卡,找到“将此文档另存为”选项,从下拉框中找到“Unicode(UTF-8)”,点击“确定”完成设置,保存当前文档重新打开再点击 URL 尝试,故障消失。

Windows Client | 评论(0) | 引用(0) | 阅读(124)
发表评论
昵称 [注册]
密码 游客无需密码
网址
电邮
打开HTML 打开UBB 打开表情 隐藏 记住我