我在创建输入验证哈希时遇到问题。JavaScript 向 API 提交数据,API 使用 json_encode 验证发送的数据。基本上它是这样工作的:
$input=array('name'='John Doe','city'=>'New York');
$validationHash=sha1(json_encode($input).$key); // Key is known to both servers
如果 PHP 连接到另一台服务器,那么一切正常。它也可以通过 JavaScript 工作(我也有一个自定义的 sha1() 函数):
var validationHash=sha1(JSON.stringify({'name':'John Doe','city'=>'New York'})+key);
当字符串包含 UTF-8 字符时,我的问题就出现了。例如,如果其中一个值为:
Ränisipelgasöösel
然后接收命令的 PHP 服务器在 JSON 编码后将其转换为:
R\u00e4nisipelgas\u00f6\u00f6sel
我也需要在 JavaScript 中执行此操作,但我无法弄清楚如何操作。我需要确保向服务器发送正确的验证哈希,否则命令会失败。我从 Google 发现 unescape(encodeURIComponent(string)) 和 decodeURIComponent() 可以使用,但它们都没有给我 PHP 拥有和验证的相同字符串。
UTF-8 用于客户端和服务器。
有任何想法吗?