Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Facebook Graph API-非英语专辑名称_Facebook_Encoding_Hebrew_Non English - Fatal编程技术网

Facebook Graph API-非英语专辑名称

Facebook Graph API-非英语专辑名称,facebook,encoding,hebrew,non-english,Facebook,Encoding,Hebrew,Non English,我正在尝试做一件简单的事情——得到我所有的专辑。 问题是专辑名不是英文的(他们是希伯来语) 检索相册的代码: string query = "https://graph.facebook.com/me/albums?access_token=..."; string result = webClient.DownloadString(query); 这是其中一张返回的相册的样子: { "id": "410329886431", "from": { "name

我正在尝试做一件简单的事情——得到我所有的专辑。 问题是专辑名不是英文的(他们是希伯来语)

检索相册的代码:

string query = "https://graph.facebook.com/me/albums?access_token=...";
string result = webClient.DownloadString(query);
这是其中一张返回的相册的样子:

{
     "id": "410329886431",
     "from": {
        "name": "Noam Levinson",
        "id": "500786431"
     },
     "name": "\u05ea\u05e2\u05e8\u05d5\u05db\u05ea \u05d2\u05de\u05e8 \u05e9\u05e0\u05d4 \u05d0",
     "location": "\u05e9\u05e0\u05e7\u05e8",
     "link": "http://www.facebook.com/album.php?aid=193564&id=500786431",
     "count": 27,
     "type": "normal",
     "created_time": "2010-07-18T06:20:27+0000",
     "updated_time": "2010-07-18T09:29:34+0000"
  },
正如您所看到的,问题在于“name”属性。而不是希伯来字母 我得到了这些代码(这些代码不是垃圾,它们是一致的——每个代码可能代表一个希伯来文字母)。 问题是,如何将这些代码转换成非英语语言(在我的例子中是希伯来语)。 或者问题是我如何使用webClient对象检索相册。也许会改变网络客户端编码方式

我能做些什么来解决这个问题


提前感谢。

这些是Unicode字符代码。\u序列告诉解析器接下来的4个字符实际上构成了一个unicode字符号。这些字符的外观取决于您的字体,如果有人没有正确的字体,他们可能会显示为许多方形框。
据我所知,Unicode是复杂的。

这就是Unicode在中的表示方式(请参见侧栏中的
char
定义)。它们是转义序列,其中四个十六进制数字是字符的Unicode码点。请注意,由于只有四个十六进制数字可用,因此只有来自的Unicode字符可以用JSON表示


任何像样的JSON解析器都会将这些Unicode转义序列转换为正确编码的字符,前提是目标编码首先支持该字符。

我对Facebook Graph Api和转义的Unicode罗马尼亚字符也有同样的问题。我使用过PHP,但您可能可以将regexp方法转换为javascript

方法1(PHP):

如果您直接在html中声明字符集,方法2(PHP)和probaby也会起作用:

header('content-type:text/html;charset=utf-8');

对于希伯来文文本,PHP中的这段代码将解决以下问题:

    $str = '\u05ea\u05e2\u05e8\u05d5\u05db\u05ea \u05d2\u05de\u05e8 \u05e9\u05e0\u05d4 \u05d0';

    function decode_encoded_utf8($string){
        return preg_replace_callback('#\\\\u([0-9a-f]{4})#ism', function($matches) { return mb_convert_encoding(pack("H*", $matches[1]), "UTF-8", "UCS-2BE"); }, $string);
    }
    echo decode_encoded_utf8($str); // will show (תערוכת גמר שנה א) text
对于阿拉伯语文本,请使用以下命令:

$str = '\u00d8\u00ae\u00d9\u0084\u00d8\u00b5';

function decode_encoded_utf8($string){
    return preg_replace_callback('#\\\\u([0-9a-f]{4})#ism', function($matches) { return mb_convert_encoding(pack("H*", $matches[1]), "UTF-8", "UCS-2BE"); }, $string);
}
echo iconv("UTF-8", "ISO-8859-1//TRANSLIT", decode_encoded_utf8($str));
$str = '\u00d8\u00ae\u00d9\u0084\u00d8\u00b5';

function decode_encoded_utf8($string){
    return preg_replace_callback('#\\\\u([0-9a-f]{4})#ism', function($matches) { return mb_convert_encoding(pack("H*", $matches[1]), "UTF-8", "UCS-2BE"); }, $string);
}
echo iconv("UTF-8", "ISO-8859-1//TRANSLIT", decode_encoded_utf8($str));