API的charset编码

时间:2013-09-12 09:01:31

标签: c# json zend-framework utf-8 webclient

我使用Zend Framework 1.x在PHP中构建了一个API 目前只有一个webclient连接到API,但我们开始开发一个C#客户端。 我遇到了一个问题,这是它的工作原理:

  • 用户填写C#客户端中的表单
  • C#使用WebClient.UploadValues发送数据(添加了一些值,例如参数的hmac,x-api-key等)。
  • 服务器接收数据
  • 服务器将数据转换为json并从中创建hmac
  • 服务器会比较发送的hmac和创建的hmac

这是我的问题所在。如果我发送没有重音的数据,一切正常。但如果有,Zend_Json :: encode($ params)返回一个以UTF8编码的json,因此创建的hmac与发送的hmac不同。

所以,我想知道(至于一些神秘的原因utf8_decode($ json)不起作用,我是否应该找到一种方法来比较utf8解码的json hmac应该作为C#客户端发送所有在utf8中编码的参数?

1 个答案:

答案 0 :(得分:1)

C#客户端应发送UTF8中编码的所有参数。由于definition of JSON状态:

,您无法从JSON中的Unicode-UTF8运行
  

JSON文本应以Unicode编码。默认编码是      UTF-8。

也可以是UTF-16 (BE or LE)UTF-32 (BE or LE)

如果你从数据生成JSON然后得到hmac应该有区别,对吧? 至少JSON还有两个符号? {}那么哈希值应该与C#客户端发送的哈希值不同吗?

让客户端以JSON格式向您发送数据或在转换数据之前获取hmac。