【发布时间】:2020-08-09 21:25:01
【问题描述】:
我在为从 Javascript 到 PHP 然后返回到 Javascript 的输入和输出的相同匹配制定正确的组合时遇到问题
Javascript 编码:(textarea=input1) => 输出到 (textarea=input2)
btoa(unescape(encodeURIComponent(document.querySelector('.input1').value)));
PHP 解码:(textarea=input2) => 输出到 (textarea=input3)
htmlspecialchars(SQLite3::escapeString(base64_decode($_POST['input2'])));
PHP 编码:(textarea=input3) => 输出到 (textarea=input4)
base64_encode(htmlspecialchars(urldecode(($d['data']))));
Javascript 解码:(textarea=input4) => 输出到 (textarea=input5)
decodeURIComponent(escape(atob(document.querySelector('.input4').value)));
但它们不匹配,我使用https://text-compare.com/ 进行比较,它在输入中输出并显示",它还删除所有+ 符号
如何让输入和输出同时匹配?
【问题讨论】:
-
为何如此复杂?为什么需要同时进行 URI 编码、Base64 和 HTML 转义?
-
目前尚不清楚您如何准确传递该数据,但至于严格使用的数据格式,我认为您对 json 有更多的运气。在 PHP 中是
json_encode和json_decode,在 Javascript 中是JSON.stringify和JSON.parse。如果您的目标是隐藏它,您仍然可以选择base64。但这将比您当前正在执行的所有转义更可靠。旁注,可能是您在 PHP 端缺少的ENT_QUOTES参数。 -
我通过 Ajax 传递它,我得到 Latin1 超出范围,它正在 json 中传递,它的编码是问题
-
哦,我明白你在说什么了。在这种情况下,你的解决方案是 PHP 中的
mb_convert_encoding。 -
我应该把它放在哪个部分?
标签: javascript php