在JavaScript和PHP之间传递语言字符

I am trying to pass special language characters like ąėšų from a JavaScript string into a URL and I would like to retrieve the string using the PHP GET method.

However I end up having different special language characters, somehow ė ends up being Ä—.

I have tried using encodeURIComponent() to encode the string in javascript and then using PHP's rawurldecode() function to decode it, but nothing changes.

Has anyone had this problem before?

On the PHP docs page for rawurldecode(), check the note left by Javier. He mentions that some characters he encountered were not decoded properly. Possibly, you are experiencing a similar issue.

Edit: here is the code from the link just in case:

<?php
function urlRawDecode($raw_url_encoded)
{
    # Hex conversion table
    $hex_table = array(
        0 => 0x00,
        1 => 0x01,
        2 => 0x02,
        3 => 0x03,
        4 => 0x04,
        5 => 0x05,
        6 => 0x06,
        7 => 0x07,
        8 => 0x08,
        9 => 0x09,
        "A"=> 0x0a,
        "B"=> 0x0b,
        "C"=> 0x0c,
        "D"=> 0x0d,
        "E"=> 0x0e,
        "F"=> 0x0f
    );

    # Fixin' latin character problem
        if(preg_match_all("/\%C3\%([A-Z0-9]{2})/i", $raw_url_encoded,$res))
        {
            $res = array_unique($res = $res[1]);
            $arr_unicoded = array();
            foreach($res as $key => $value){
                $arr_unicoded[] = chr(
                        (0xc0 | ($hex_table[substr($value,0,1)]<<4)) 
                       | (0x03 & $hex_table[substr($value,1,1)])
                );
                $res[$key] = "%C3%" . $value;
            }

            $raw_url_encoded = str_replace(
                                    $res,
                                    $arr_unicoded,
                                    $raw_url_encoded
                        );
        }

        # Return decoded  raw url encoded data 
        return rawurldecode($raw_url_encoded);
}

print urlRawDecode("%C3%A1%C3%B1");

// output:
// áñ

?>