views:

34

answers:

3

hi,

i'm using the code from here: http://phlymail.com/en/downloads/idna/download/ and built a function like this (from the example):

function convert_to_punycode($inputstring)
{
    $IDN = new idna_convert();
    // The input string, if input is not UTF-8 or UCS-4, it must be converted before
    $inputstringutf8 = utf8_encode($inputstring);
    // Encode it to its punycode presentation
    $outputstringpunycode = $IDN->encode($inputstringutf8);
    return $outputstringpunycode;
}

However it doesnt work properly.

For the input: Россию
It gives: РоÑÑиÑ
Whereas it should give: xn--h1alffa3f

What am I doing wrong? $inputstring which is being passed is a normal string with no special declarations/etc...

+2  A: 

Is your string already UTF-8? Looks like it. Or is it in ISO-8859-5? In both cases you cannot use the PHP function utf8_encode(), since it expects your input string to be ISO-88591-1 (ISO Latin-1, Western European languages). Look into the file transcode_wrapper.php, which is delivered with the class source. This might help you.

Matthias Sommerfeld
Hi! Thank you! That did seem to be the case and it solved the problem! Muchos gracias!
Dave
A: 

you might need PHP IDNA Extension

kgb
A: 

kgb: No, actually this class is exactly an IDN conversion class written entirely in PHP, so this extension is NOT necessary.

Dave: Glad, I could help ;)

Matthias Sommerfeld