1

我有一个问题,我似乎无法找到解决方案。我正在尝试使用提供的工具从魔兽世界军械库中提取数据,效果很好:

<?php
$toon = 'http://eu.battle.net/api/wow/character/(realm)/(character name)';
$data = file_get_contents($toon);
$obj = json_decode($data);?>
<img src="http://eu.battle.net/static-render/eu/<?php echo $obj->thumbnail; ?>"> </img><br />
<?php
echo "Name: " . $obj->name . "<br />";
echo "Level: " . $obj->level . "<br />";
echo "Image: " . $obj->thumbnail . "<br />";
?>

我试图检索的是缩略图,其余的名称/级别等对我来说并不重要。问题仅在名称开始使用特殊字符时出现,例如:

á,â,etc ( http://www.utf8-chartable.de/ )

问题或多或少是军械库api只允许像

á = %C3%A1
â = %c3%a2

这有点奇怪,因为默认页面只是将这些转换回普通字母。但是 Api 不支持它。

例如:
http ://eu.battle.net/api/wow/character/darkspear/J%C3%ADmmeh (是 api)
http://eu.battle.net/wow/en/character/darkspear/Jímmeh/simple (普通军械库页面)

我现在的问题是有人可以帮我找出一种将á转换为十六进制代码的方法吗?

&charname (getting the information from some input field normal characters)
**Converting the &charname with special characters to the charname with hex code's)**
&realmname = http://eu.battle.net/api/wow/character/(realm name)
&toon = &realmname.&charname

(继续其余代码)

4

2 回答 2

1

URL 只能包含 ASCII 字符的子集,它们不支持“á”等字符。
要在 URL 中包含这样的非 ASCII 字符,您需要urlencode它。

如果浏览器将 URL 显示为darkspear/Jímmeh/simple,那只是浏览器美化了 URL 以供显示。

于 2012-04-05T02:17:10.717 回答
1

经过一夜好眠和更多工作后,我发现它并不完全有效:(

问题仍然在于现在例如:

á 变成 %E1 ,它的工作原理当然是它的 inteded。但是这个链接对于 wow API 仍然没有用。但经过一番搜索,我终于找到了方法,如果你想获得这样的链接,你必须这样做:

urlencode(utf8_encode($test));

这将使字符串为 utf8,然后将其更改为 url 编码,从而得到我所需要的:)

于 2012-04-05T11:07:38.700 回答