My php file is in UTF-8 encoding and I am trying to encode my data for safe sending into application but some characters get encoded incorrectly.
$text = "Š";
$text = urlencode(utf8_decode($text));
echo $text;
Echos %3F but according to w3c urlencoding reference found here (http://www.w3schools.com/tags/ref_urlencode.asp), “Š” should be converted into %8A. Php’s own reference also does not state what reference is it using. Could this be encoding/decoding issue or something else?
utf8_decode tries to convert from UTF-8 to ISO-8859-1 but Š does not exist in ISO-8859-1. So you obtain ‘?’ (= %3F), the substitution character.
It exists in CP1252 (maybe others), under the hexadecimal code 8A. So:
Should give what you expect. In fact, you shouldn’t decode an unicode string.