2

Possible Duplicate:
How to get the character from unicode value in PHP?
PHP: Convert unicode codepoint to UTF-8

How can I convert a unicode character such as %u05E1 to a normal character via PHP?

The chr function not covering it and I am looking for something similar.

1
  • 1
    Please define what a "normal character" is to you. Commented Sep 1, 2011 at 17:40

2 Answers 2

17

"%uXXXX" is a non-standard scheme for URL-encoding Unicode characters. Apparently it was proposed but never really used. As such, there's hardly any standard function that can decode it into an actual UTF-8 sequence.

It's not too difficult to do it yourself though:

$string = '%u05E1%u05E2';
$string = preg_replace('/%u([0-9A-F]+)/', '&#x$1;', $string);
echo html_entity_decode($string, ENT_COMPAT, 'UTF-8');

This converts the %uXXXX notation to HTML entity notation &#xXXXX;, which can be decoded to actual UTF-8 by html_entity_decode. The above outputs the characters "סע" in UTF-8 encoding.

Sign up to request clarification or add additional context in comments.

1 Comment

Nothing short of genius!
0

Use hexdec to convert it to it's decimal representation first.

echo chr(hexdec("05E1"));
var_dump(hexdec("%u05E1") == hexdec("05E1")); //true

1 Comment

chr only handles code points defined in ASCI, it won't handle multi-byte Unicode characters. The above echos "?".

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.