【问题标题】:decoding hexdecimals from URLs从 URL 解码十六进制
【发布时间】:2010-11-24 20:17:28
【问题描述】:

许多网站(如 google 和 wikipedia)以十六进制编码非英语字符,并带有前导 '%' 符号。 我寻找了一个工具,我可以将 URL 导入其中,当遇到这样的 %AA 字符串时,会将这些符号转换回 utf 以便我可以阅读它们。

因为找不到,我自己用c写的,想分享给大家,也许你会觉得有用:

#include <stdio.h>
int main()
   {
        char c;
        unsigned int i;
        while (!feof(stdin))
        {
                if (0==fread(&c,1,1,stdin)) break;
                if (c!='%') putchar(c);
                else
                {
                        if (scanf("%X",&i)==1) putchar(i);
                        else putchar('%');
                }
        }
        return 0;
}

用法示例:

# 回显 “http://he.wikipedia.org/wiki/%D7%A2%D7%9E%D7%95%D7%93_%D7%A8%D7%90%D7%A9%D7%99” | ./dumpHex

结果:

http://he.wikipedia.org/wiki/עמוד_ראשי

【问题讨论】:

  • 根据您使用的语言和框架,这些实用程序很常见:JavaNetPHP 等...

标签: url unicode hex


【解决方案1】:

在 VC++ 中:

string dec = URLDecoder::decode(url)

PHP:

$d = urldecode($u)

Java:

String dec = URLDecoder.decode(url,"UTF-8");

等等……

【讨论】:

  • 您的问题提供了一个字符串,它是URL Encoding 的特定情况,即将在URL 中不安全使用的字符转换为"%xx"' where " 形式的八位字节x`" 是一个十六进制数字。
  • @akiva_eshbal,严格来说,如果您想将十六进制八位字节转换为字符,并且每个八位字节通过前面的'%' 与非编码内容区分开来,那么您正在查看 URL 编码或对它的改编。
  • @akiva_eshbal,但是字符串可以包含任何内容,并且上述任何示例都将解码其中的任何 "%xx" 标记。例如。 "עמוד_ראשי" == URLDecoder::decode("%D7%A2%D7%9E%D7%95%D7%93_%D7%A8%D7%90%D7%A9%D7%99").
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-12-23
  • 2018-09-27
  • 1970-01-01
  • 2020-06-15
  • 2020-11-11
  • 2018-08-21
  • 2018-02-07
相关资源
最近更新 更多