我将尝试使用JavaScript对字符串进行编码,并在PHP中进行解码。
我使用以下代码将字符串放入输入框,然后通过表单PUT发送:
这里有一个编码页面的jsfiddle链接:https://jsfiddle.net/okaea662/ 问题在于我总是得到一个字符串,大约有98%的正确性,但是存在一些不同的字符。例如:(第一个字符串是在输入框中打印的字符串)
¦S÷ä½m0×C|u>£áWÅàUù»¥ïs7Dþ1Ji%ýÊ{\ö°(úýýÁñxçO9Ù¡
我不知道这里到底发生了什么。有任何想法吗?我在Chrome浏览器中使用utf-8编码来处理头文件和元数据(Firefox似乎在输入框中使用了不同的编码,但我之后会解决这个问题)。
编辑:
显然,将其编码为base64不是问题。在浏览器和服务器中,base64编码的字符串是相同的。如果我在javascript中对其进行base64解码,我会得到原始字符串,但如果我在PHP中对其进行解码,我会得到一个略微不同的字符串。
编辑2:
我仍然不知道问题出在哪里,但我已经通过ajax将数据发送到blob中避免了这个问题。
我使用以下代码将字符串放入输入框,然后通过表单PUT发送:
document.getElementById('signature').value= b64EncodeUnicode(ab2str(signature));
并使用以下代码进行解码
$signature=base64_decode($signature);
这里有一个编码页面的jsfiddle链接:https://jsfiddle.net/okaea662/ 问题在于我总是得到一个字符串,大约有98%的正确性,但是存在一些不同的字符。例如:(第一个字符串是在输入框中打印的字符串)
¦S÷ä½m0×C|u>£áWÅàUù»¥ïs7Dþ1Ji%ýÊ{\ö°(úýýÁñxçO9Ù¡
ö}XÇIWçβÆü8ú²ðÑOA¤nì6S+̽ i¼?¼ºNËÒo·a©8»eO|PPþBE=HèÑqaX©$Ì磰©b2(Ðç.$nÈR,ä_OX¾xè¥3éÂòkå¾ N,sáW§ÝáV:
ö~Å×à<4)íÇKo¡L¤<Í»äA(!xón#WÙÕGù¾g!)ùC)]Q(*}?Ìp
¦S÷ ä½m0×C|u>£áWÅàUù»¥ïs7Dþ1Ji%ýÊ{\ö°(úýýÁñxçO9Ù¡ö}XÇIWçβÆü8ú²ðÑOA¤nì6S+̽ i¼?¼ºNËÒo·a©8»eO|PPþBE=HèÑ qaX©$Ì磰©b2(Ðç.$nÈR,ä_OX¾xè¥3éÂòkå¾ N ,sá W§ÝáV:
ö~Å×à<4)íÇKo¡L¤<Í»äA(!xón#WÙÕGù¾g!)ùC)]Q(*}?Ìp
请注意第四个字符是不同的,然后还有一个或两个字符在其他地方。这个字符串对应于数字签名,所以这些字符使得签名无效。我不知道这里到底发生了什么。有任何想法吗?我在Chrome浏览器中使用utf-8编码来处理头文件和元数据(Firefox似乎在输入框中使用了不同的编码,但我之后会解决这个问题)。
编辑:
显然,将其编码为base64不是问题。在浏览器和服务器中,base64编码的字符串是相同的。如果我在javascript中对其进行base64解码,我会得到原始字符串,但如果我在PHP中对其进行解码,我会得到一个略微不同的字符串。
编辑2:
我仍然不知道问题出在哪里,但我已经通过ajax将数据发送到blob中避免了这个问题。