Firstly, I used "urlencode()" command on php to encode my string which is "มนต์รักเพลงสการ์" <-- Thai language..
It returned "%C1%B9%B5%EC%C3%D1%A1%E0%BE%C5%A7%CA%A1%D2%C3%EC" ... I try to use it with flash but I cannot..
BUT... when I posted the same string(thai language) on goggle search engine. It returned my string which is already encoded on URL...
It returned "%E0%B8%A1%E0%B8%99%E0%B8%95%E0%B9%8C%E0%B8%A3%E0%B8%B1%E0%B8%81%E0%B9%80%E0%B8%9E%E0%B8%A5%E0%B8%87%E0%B8%AA%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B9%8C" Moreover, this string can use with my flash properly....
So, I would generate string which use the same algorithm with google.. Has anyone know what I can do? ...
Thank you in advance....
mongkol
I cannot [b]encode url [/b]strings for using with flash.
Moderator: General Moderators
The string from Google was probably converted to utf-8 before it was coded. Since your string is in unicode and not ISO-8859-1 you can't use the built in function utf8_encode(), but I found this under the User Contributed Notes in the PHP manual:
/josa
Use this function to utf8 encode your string before you send it to urlencode() like this:ronen@greyzone.com
07-Mar-2002 12:01
The following function will utf-8 encode unicode entities &#nnn(nn);
with n={0..9}
Ronen.Code: Select all
/** * takes a string of unicode entities and converts it to a utf-8 encoded string * each unicode entitiy has the form &#nnn(nn); n={0..9} and can be displayed by utf-8 supporting * browsers. Ascii will not be modified. * @param $source string of unicode entities їSTRING] * @return a utf-8 encoded string їSTRING] * @access public */ function utf8Encode ($source) { $utf8Str = ''; $entityArray = explode ("&#", $source); $size = count ($entityArray); for ($i = 0; $i < $size; $i++) { $subStr = $entityArrayї$i]; $nonEntity = strstr ($subStr, ';'); if ($nonEntity !== false) { $unicode = intval (substr ($subStr, 0, (strpos ($subStr, ';') + 1))); // determine how many chars are needed to reprsent this unicode char if ($unicode < 128) { $utf8Substring = chr ($unicode); } else if ($unicode >= 128 && $unicode < 2048) { $binVal = str_pad (decbin ($unicode), 11, "0",STR_PAD_LEFT); $binPart1 = substr ($binVal, 0, 5); $binPart2 = substr ($binVal, 5); $char1 = chr (192 + bindec ($binPart1)); $char2 = chr (128 + bindec ($binPart2)); $utf8Substring = $char1 . $char2; } else if ($unicode >= 2048 && $unicode < 65536) { $binVal = str_pad (decbin ($unicode), 16, "0",STR_PAD_LEFT); $binPart1 = substr ($binVal, 0, 4); $binPart2 = substr ($binVal, 4, 6); $binPart3 = substr ($binVal, 10); $char1 = chr (224 + bindec ($binPart1)); $char2 = chr (128 + bindec ($binPart2)); $char3 = chr (128 + bindec ($binPart3)); $utf8Substring = $char1 . $char2 . $char3; } else { $binVal = str_pad (decbin ($unicode), 21, "0",STR_PAD_LEFT); $binPart1 = substr ($binVal, 0, 3); $binPart2 = substr ($binVal, 3, 6); $binPart3 = substr ($binVal, 9, 6); $binPart4 = substr ($binVal, 15); $char1 = chr (240 + bindec ($binPart1)); $char2 = chr (128 + bindec ($binPart2)); $char3 = chr (128 + bindec ($binPart3)); $char4 = chr (128 + bindec ($binPart4)); $utf8Substring = $char1 . $char2 . $char3 . $char4; } if (strlen ($nonEntity) > 1) $nonEntity = substr ($nonEntity, 1); // chop the first char (';') else $nonEntity = ''; $utf8Str .= $utf8Substring . $nonEntity; } else { $utf8Str .= $subStr; } } return $utf8Str; }
Code: Select all
urlencode(utf8Encode("มนต์รักเพลงสการ์"));thank you a lot.. It works.
Thank you. 