You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Oxygen XML Editor中,fn:encode-for-uri('§')为何返回%C2%A7而非%A7?

关于encode-for-uri函数编码结果差异的解析
  • 核心原因:字符的UTF-8编码长度不同
    encode-for-uri函数遵循URI编码规范,会先将字符转换为UTF-8字节序列,再对每个字节进行百分号编码(% + 两位十六进制值)。不同字符的UTF-8编码字节数不同,直接导致了最终编码结果的差异。

  • §的编码细节
    §的Unicode码点是U+00A7,属于Latin-1补充字符范畴(码点范围U+0080到U+07FF)。这类字符的UTF-8编码需要两个字节:

    1. 第一个字节:取码点的高位6位(U+00A7二进制为10100111,高位6位是001010),加上UTF-8双字节前缀0xC0,得到0xC2;
    2. 第二个字节:取码点的低位6位(000111),加上UTF-8后续字节前缀0x80,得到0xA7。
      所以UTF-8字节序列是0xC2 0xA7,对应百分号编码就是%C2%A7。
  • $、(、|等字符的编码逻辑
    这些字符的Unicode码点都在U+0000到U+007F之间(ASCII字符范围),它们的UTF-8编码就是单个字节,和原ASCII值完全一致。比如|的码点是U+007C,对应字节0x7C,所以编码后就是%7C。


内容的提问来源于stack exchange,提问作者Philipp Koch

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 02:22:34