在PHP中将特殊字母(á,â等)转换为UTF 8(十六进制)

时间:2012-04-05 02:09:01

标签: php utf-8 world-of-warcraft

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

<?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 />";
?>

我试图检索的是thumnail,其余的名字/等级对我来说并不重要。 只有在名称开始使用特殊字符时才会出现问题:

á,â,等(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

(继续其余代码)

2 个答案:

答案 0 :(得分:1)

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

如果浏览器将网址显示为darkspear/Jímmeh/simple,那就是浏览器美化网址以进行展示。

答案 1 :(得分:1)

经过一夜好眠和一些工作后,我发现它并没有真正的工作:(

问题仍然在于现在例如:

á成为%E1,其作为其意图的作品。但是这个链接对于哇API仍然没用。 但经过一番搜索,我终于找到了如果你想获得这样一个链接的方法,你将不得不这样做:

urlencode(utf8_encode($test));

这将使字符串utf8然后将其更改为url编码,从而导致我需要的东西:)