我正在编写一个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 再次只返回没有实际数据的XML模式..
我尝试的另一种方法是对希伯来词进行不同的编码。 由于WinRT不支持“httputility”,我不得不用反射器将其导回..必须告诉你,这不好玩..
我最终得到了编码的“נאפיס”,其中包含%u05e0%u05d0%u05e4%u05d9%u05e1 当我从这样的浏览器中使用它时:
效果很好,获取实际的XML数据,而在嗅探器中,参数保持不变(%u05e0%u05d0%u05e4%u05d9%u05e1)。
但是当我从我的代码中使用它时,我再次只获得了模式,并且在嗅探器中,我看到字符串被编码为: %25u05e0%25u05d0%25u05e4%25u05d9%25u05e1 意思是它再次被URL编码!
我非常绝望......我尝试了所有组合......
有人对此有所了解吗?感谢。
答案 0 :(得分: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);