2010-07-11 3 views
3

im делать сайт для проверки, регистрации и т. Д. Доменов, я должен сделать его совместимым с IDN. Прямо сейчас у меня есть что-то вроде этого:Как я могу кодировать и расшифровывать URL-адреса из IDN в php?

echo $domain;  
$domain = idn_to_ascii($domain); 
echo $domain; 
$domain = idn_to_utf8($domain); 
echo $domain; 

и им получить это:

testing123ásd123 х - testing123sd123-WJB testing123ĂĄsd123

, как вы можете увидеть декодированного строку Isnt так же, как оригинал я также пробовал использовать класс http://phlymail.com/en/downloads/idna/download/, чтобы сделать это, и им получить те же результаты

Я попытался использовать:

$charset="UTF-8"; 
echo $domain;  
$domain = idn_to_ascii($domain, $charset); 
echo $domain; 
$domain = idn_to_utf8($domain); 
echo $domain; 

и я получил точно такой же (за исключением того, что строка в кодировке немного отличается)

какие-либо идеи?

EDIT: Проблема решена! с этим Problem in converting string to puny code (in PHP, using phlyLabs's punycode string converter) оригинальная строка была в iso-8859-2 и расшифрована в UTF-8, теперь мне нужно найти, как сделать это iso-8859-2 снова, но google поможет мне в этом. Любые моды? что я должен делать с вопросом? закрыть его, стереть? оставьте это так?

ответ

3

Как вы уже указываете, ĂĄ представляется представлением UTF8 символа á, как показано в документе, отличном от UTF8.

Вы можете использовать iconv() для преобразования между кодировками. Однако имейте в виду, что кодировки, которые не являются Unicode, не могут представлять полный набор международных символов, поэтому необходимо преобразовать недостающие символы в объекты HTML. Например:

<?php 

$domain = idn_to_utf8($domain); 
echo htmlentities($domain, ENT_COMPAT, 'UTF-8'); 

?> 

В любом случае, возможно, было бы проще использовать UTF-8 для всего проекта.

 Смежные вопросы

  • Нет связанных вопросов^_^