0

我正在编写一个 Windows 商店应用程序,并在我的 DAL 中从 Web 服务获取 XML 数据。我正在使用站点 API 公开的 HTTP GET 请求和响应。

我能够从不需要参数的各种方法中成功获取数据,或者获取整数参数..

当我不得不使用字符串参数时,问题开始了,英文字符串成功传递,但希伯来语字符串没有。

当我使用网站 API 开发的测试表单时,在 textBox 中输入“נאפיס”,它返回一个 XML 罚款,并且通过嗅探器,我看到字符串被编码为 %E3%E9%F7%F1%E9

当我自己从同名代码构建 URI 时,我只得到 XML 的模式,我看到字符串被编码为 %D7%93%D7%99%D7%A7%D7%A1%D7%99 - 意思使用 UTF-8 编码的 URL..

我尝试将其编码为希伯来语并解码回 utf-8,并得到了这个字符串:ðàôéñ 当我把它放在这样的工具中时: http ://coderstoolbox.net/string/ 我看到如果我对那个字符串进行 URL 编码( ðàôéñ) 我将得到所需的 %F0%E0%F4%E9%F1。

所以我将该字符串发送到 api,但它再次显示为 %C3%B0%C3%A0%C3%B4%C3%A9%C3%B1 ang 只返回没有实际数据的 XML 架构。

我尝试的另一种方法是对希伯来语单词进行不同的编码。由于 WinRT 不支持“httputility”,我不得不用反射器将它导入回来.. 必须告诉你,这不好玩..

我最终得到了带有 %u05e0%u05d0%u05e4%u05d9%u05e1 的编码“נאפיס”当我从浏览器中使用它时:

http://new.rest.co.il/WebService/RestWS.asmx/SearchRestsByName?Keyword=%u05e0%u05d0%u05e4%u05d9%u05e1

它工作得很好,获取实际的 XML 数据,并且在嗅探器中,参数保持不变(%u05e0%u05d0%u05e4%u05d9%u05e1)。

但是当我从我的代码中使用它时,我再次只得到架构,并且在嗅探器中,我看到字符串被编码为:%25u05e0%25u05d0%25u05e4%25u05d9%25u05e1 意味着它再次被 URL 编码!

我对此感到非常绝望..我尝试了所有组合..

有人对此有任何想法吗?谢谢。

4

1 回答 1

0

在发送到 fb 之前,您应该先 json_encode 然后 json_decode,这样就可以了。这是一个 PHP 示例:

$album_details = array(
  'message'=> 'Live photos from our app',                      
  'name'=> $title, // This can be any non-english characters that can be in unicode
  'access_token'=>$pageAccessToken
);

$jsonStr = json_encode($album_details); // THIS IS KEY IN WHATEVER PLATFORM
$decoded_album_settings = json_decode($jsonStr, true); // THIS IS KEY IN WHATEVER PLATFORM

$create_album = $this->facebook->api('/'.$this->facebookPageId.'/albums', 'post', $decoded_album_settings);

这个想法来自这里:https ://stackoverflow.com/a/3806967/1200166

于 2013-01-01T12:36:31.140 回答