/ Published in: PHP
You can recompose a Hex-representation by converting the hexadecimal chars with hexdec(), repacking the component chars, and then using mb_convert_encoding() to convert from UCS-2 into UTF-8. As I mentioned in my answer to your other question, you'll still need to be careful with the output encoding, although here you've specifically requested UTF-8, so we'll use that for the upcoming sample.
Here's a sample that does the work of converting UCS-2 in Hex to UTF-8 in native string form. As PHP currently doesn't ship with a hex2bin() function, which would make things very easy, we'll use the one posted at the reference link at the end. I've renamed it to *local_hex2bin()* just in case it conflicts with a future version of PHP or with a definition in some other 3rd party code that you include in your project.
Locally, I called this sample page UCS2HexToUTF8.php, and then used a querystring to set the output.
UCS2HexToUTF8.php?06450631062d0628064b06270020063906270644064500200021
Here's a sample that does the work of converting UCS-2 in Hex to UTF-8 in native string form. As PHP currently doesn't ship with a hex2bin() function, which would make things very easy, we'll use the one posted at the reference link at the end. I've renamed it to *local_hex2bin()* just in case it conflicts with a future version of PHP or with a definition in some other 3rd party code that you include in your project.
Locally, I called this sample page UCS2HexToUTF8.php, and then used a querystring to set the output.
UCS2HexToUTF8.php?06450631062d0628064b06270020063906270644064500200021
Expand |
Embed | Plain Text
Copy this code and paste it in your HTML
<?php function local_hex2bin($h) { $r=''; return $r; }; echo '<html><head>'; echo '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />'; echo '</head><body>'; $querystring = $_SERVER['QUERY_STRING']; // NOTE: we could substitute one of the following: // $querystring = '06450631062d0628064b06270020063906270644064500200021'; // $querystring = '00480065006C006C006F'; $ucs2string = local_hex2bin($querystring); // NOTE: The source encoding could also be UTF-16 here. // TODO: Should check byte-order-mark, if available, in case // 16-bit-aligned bytes are reversed. echo 'query string: '.$querystring.'<br />'; echo 'converted string: '.$utf8string.'<br />'; echo '</body>'; ?>
URL: http://stackoverflow.com/questions/2005358/ucs2-hexencoded-characters-to-utf8-in-php