将不可读的字符转换为Unicode字符

时间:2012-09-23 15:16:01

标签: php javascript

当我从opengraph中调出一些facebook信息时,我会得到一些看起来像这样的名字。

\ u0d94 \ u0db1 \ u0dca \ u0dbd \ u0dd2 \ u0dc3 \ u0dd2 \ u0db1 \ u0dca \ u0d9c \ u0dca \ u0dbd \ u0dd2 \ u0dc2 \ u0dca

有没有办法使用PHP或Javascript将它们转换为可读的unicode字符? PHP更受欢迎。谢谢

2 个答案:

答案 0 :(得分:5)

使用json_decode()

$str = '\u0d94\u0db1\u0dca\u0dbd\u0dd2';
echo json_decode('"'.$str.'"'); // ඔන්ලි

Codepad Example

答案 1 :(得分:0)

以下代码允许您解码字符,并在必要时重新编码

代码

if (!function_exists('codepoint_encode')) {

    function codepoint_encode($str) {
        return substr(json_encode($str), 1, -1);
    }

}

if (!function_exists('codepoint_decode')) {

    function codepoint_decode($str) {
        return json_decode(sprintf('"%s"', $str));
    }

}

如何使用

header('Content-Type: text/html; charset=utf-8'); 

var_dump(codepoint_encode('ඔන්ලි'));
var_dump(codepoint_encode('සින්ග්ලිෂ්'));

var_dump(codepoint_decode('\u0d94\u0db1\u0dca\u0dbd\u0dd2'));
var_dump(codepoint_decode('\u0dc3\u0dd2\u0db1\u0dca\u0d9c\u0dca\u0dbd\u0dd2\u0dc2\u0dca'));

输出

string(30) "\u0d94\u0db1\u0dca\u0dbd\u0dd2"
string(60) "\u0dc3\u0dd2\u0db1\u0dca\u0d9c\u0dca\u0dbd\u0dd2\u0dc2\u0dca"
string(15) "ඔන්ලි"
string(30) "සින්ග්ලිෂ්"