2012-04-05 2 views
1

У меня проблема, с которой я не могу найти решение. Я пытаюсь вытащить данные из мира Warcraft оружейной прилагающихся инструментов, который работает отлично:Преобразование специальных букв (á, â и т. Д.) В UTF 8 (hex) в 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/)

Проблема заключается в том, более или менее, что оружейный апи позволяет только такие вещи, как

а = % C3% A1
â =% c3% a2

Это немного странно, поскольку страница по умолчанию просто преобразует их обратно в обычные буквы. Но Api не поддерживает его.

пример:
http://eu.battle.net/api/wow/character/darkspear/J%C3%ADmmeh (это апи)
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 

(продолжение остальной части коды)

ответ

1

URL-адрес может содержать только подмножество ASCII символов, они не поддерживают символы, такие как «А».
Чтобы включить такой символ не ASCII в URL-адрес, вам необходимо указать urlencode.

Если в браузере указан URL-адрес darkspear/Jímmeh/simple, это просто браузер, предопределяющий URL-адрес для отображения.

+0

Ах спасибо, что это было точно, что я искал, и мгновенно решил проблемы для меня. Благодарим вас за поддержку. – Anori

+0

@Schippie. Не забудьте нажать галочку в ответе, который вам нравится! – ghoti

1

После хорошего сна ночей и более некоторые работы я обнаружил, что оно не exactely работать :(

Проблема еще заключается в том, что сейчас, например:

а становится% E1, который работает конечно как его inteded Но эта связь все еще непригодна для вау API Но после некоторых поисков я наконец нашел способ, если вы хотите получить такую ​​ссылку вам придется сделать это:..

urlencode(utf8_encode($test)); 

Это сделает строка utf8 и th en измените это на кодировку url, в результате чего получилось точно то, что мне нужно :)

+0

Это странно, так как декодированный JSON * должен * уже быть UTF-8 ... – deceze

+0

Проблема заключается в том, что он не декодирует JSON. Я использую это для пользователей. Они могут заполнить текстовое поле с именем символа. Но они обычно не используют специальные знаки (utf-8 hex code). Поэтому мне нужно изменить это из нормального (думаю, его латинский-1) в hex-код utf-8. Ах, хорошо это wokrs, поэтому я доволен, что из-за этого ошибок нет. – Anori