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


Convert special letters (á,â etc.) to UTF 8 (hex) in PHP

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

<?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(is 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

(继续代码的其余部分)

URL只能包含ASCII字符的子集,不支持像"á"这样的字符
要在URL中包含这样一个非ASCII字符,您需要urlencode它。

如果浏览器将URL显示为darkspear/Jímmeh/simple,那么这只是浏览器对URL进行预处理以供显示。

在睡了一个好觉并做了更多的工作后,我发现它并不完全有效:(

问题仍然在于现在的事实,例如:

á变成了%E1,当然它是作为其整数工作的。但是这个链接对于令人惊叹的API来说仍然是无用的。但经过一番搜索,我终于找到了方法,如果你想得到这样一个链接,你必须这样做:

urlencode(utf8_encode($test));

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