Php base64_解码添加奇怪字符

Php base64_解码添加奇怪字符,php,base64,decode,encode,Php,Base64,Decode,Encode,我使用base64_encode在返回URL字符串上使用,但当我到达页面对其进行解码(使用base64_decode)时,它会将以下内容添加到字符串的末尾: -zh�� 以下是对字符串进行编码的代码: $sess_refer = 'http://www.mysite.com/create-report.html?view=report&layout=reports&data=selection' <input type="text" name="referrer" id=

我使用base64_encode在返回URL字符串上使用,但当我到达页面对其进行解码(使用base64_decode)时,它会将以下内容添加到字符串的末尾:

-zh��

以下是对字符串进行编码的代码:

$sess_refer = 'http://www.mysite.com/create-report.html?view=report&layout=reports&data=selection'

<input type="text" name="referrer" id="referrer" value="<?php echo base64_encode($sess_refer); ?>" />
$referrer = JRequest::getVar('referrer');
$sess_refer = base64_decode($referrer);
哪个输出:

http://www.mysite.com/create-report.html?view=report&layout=reports&data=selection-zh��

你知道我做错了什么吗?

这篇评论太长了一点,但如果没有帮助,我会删除这个答案

通过应用以下技巧,您可以使
base64\u encode()
数据网络安全。没有它,
+
就会变成一个空格,可能会弄乱编码

strtr(base64_encode($s), '+/', '-_');
要解码:

base64_decode(strtr($s, '-_', '+/'));
更新


另外,
HTTP\u REFERER
是由浏览器发送的,因此在您使用
base64\u encode()
之前,它应该被视为用户输入,因此应该作为有效的URL进行清理。

您确定URL中没有一些非unicode小精灵吗,如果复制并粘贴它,有时会从诸如ms word之类的程序中拾取一些看不见的垃圾,请尝试从头开始重新键入它?还可以看看mbstring?原始字符串是通过使用$_服务器['HTTP_REFERER']抓取的,因此不应该有任何隐藏字符等。我将研究mbstring函数:)
zh
是一个中文代码(如en-in-en-US语言环境)。。。似乎非常巧合的是,
zh
和一个超出编码范围的字符一起神奇地出现了。我用其他URL测试了它,但并不总是出现-zh。。还有一些其他参数..出现了类似“警告:base64_decode()最多需要2个参数,给定3个”的错误@Jack@Jatin我答案中的代码没有传递3个参数,只有1个参数� 角色,如何删除此角色@Jack@Jatin如果这个答案不能直接帮助你,我建议你再问一个更详细的问题。