解决Base64.encodeBase64String换行回车问题

在做接口对接的时候老是报签名错误,一步一步跟踪到原来是Base64出的问题,记录下:

据RFC 822规定,每76个字符,还需要加上一个回车换行

就因为这些换行弄得出了问题,解决办法如下,替换所有换行和回车

private static String base64(String str, String charset) throws UnsupportedEncodingException {
  String encoded = Base64.encodeBase64String(str.getBytes(charset));
  encoded = encoded.replaceAll("[\\s*\t\n\r]", "");
  return encoded;
}

小计:在php环境下不存在此问题

/**
 * 电商Sign签名生成
 * @param data 内容  
 * @param appkey Appkey
 * @return DataSign签名
 */
function encrypt($data, $appkey) {
    return urlencode(base64_encode(md5($data.$appkey)));
}

时间: 2024-10-05 18:15:41

解决Base64.encodeBase64String换行回车问题的相关文章

php去除换行(回车换行)的三种方法

 这篇文章主要介绍了php去除换行(回车换行)的三种方法,需要的朋友可以参考下  代码如下: <?php     //php 不同系统的换行   //不同系统之间换行的实现是不一样的   //linux 与unix中用 n   //MAC 用 r   //window 为了体现与linux不同 则是 rn   //所以在不同平台上 实现方法就不一样   //php 有三种方法来解决     //1.使用str_replace 来替换换行   $str = str_replace(array(&quo

深入Windows下的回车是回车换行(\r\n)还是换行回车(\n\r)的详解_C 语言

记得在Windows下学X86汇编语言时,用0DH(\r)和0AH(\n)来输出回车(跳到下一行的开始处).问题来了,在Windows下是先回车再换行呢还是先换行再回车呢?在Unix系统下换行只有\n,MAC OS下只有\r(网上是这么说的, 没用过Mac OS, 无从证实),都不会出现上述的问题. 现在新建一个文本文档,其内容如下: 现在用C语言二进制形式将其读入字符串(可以参考我的一篇文章:深入C语言把文件读入字符串以及将字符串写入文件的解决方法)并按十进制输出.结果如下 可以看出回车是13

php过滤或替换textarea换行回车\r\n的2种方法

  方法一,  代码如下   preg_replace("'([rn])[s]+'", "", $content) //去除回车换行符 方法二,  代码如下   str_replace(chr(13),'<br />',$body ) //这样把body中的回车变成了br了.

php去除换行(回车换行)的三种方法_php实例

复制代码 代码如下: <?php    //php 不同系统的换行  //不同系统之间换行的实现是不一样的  //linux 与unix中用 \n  //MAC 用 \r  //window 为了体现与linux不同 则是 \r\n  //所以在不同平台上 实现方法就不一样  //php 有三种方法来解决  //1.使用str_replace 来替换换行  $str = str_replace(array("\r\n", "\r", "\n"

php中表单输入框中换行回车替换

 代码如下 复制代码 <?php ?$str="this is a test n"; $patten  = array("rn", "n", "r");   ?//先替换掉rn,然后是否存在n,最后替换r  $str=str_replace($order, "", $str); ?> ?//php 有三种方法来解决      代码如下 复制代码 //1.使用str_replace 来替换换行 

用js解决数字不能换行问题_javascript技巧

复制代码 代码如下: function toBreakWord(intLen, id){ var obj=document.getElementById(id); var strContent=obj.innerHTML; var strTemp=""; while(strContent.length>intLen){ strTemp+=strContent.substr(0,intLen)+"<br>"; strContent=strConten

ajax返回值中有回车换行、空格的解决方法分享_php技巧

最近在写一个页面,用jquery ajax来实现判断,刚写好测试完全没有问题,过了两天发现出现问题,判断不成了.后来发现所有alert出来的返回值前面都会加若干换行和空格.(至今不明白,同一台电脑,同样的环境,为什么出现这样的问题) 后来在网上发现也有人遇到了相同的问题.无论是jquery $.ajax  $.get  $.post 在或者是原声的XMLHttpRequest方法都存在这种问题,这样调用的时候和判断的时候,有时候会出错.看例子 ajax代码: 复制代码 代码如下: $.get('

回车&quot;(carriage return)和&quot;换行&quot;(line feed)的区别和来历

这两天研究小票打印机编程手册,遇到这样一个问题: LF,即Line Feed,中文意思"换行":CR,即Carriage Return,中文意思"回车".但是我们通常把这两个混为一谈.既然设置成2个,则肯定有其存在的道理,查了一下资料,与大家分享. 关于"回车"(carriage return)和"换行"(line feed)这两个概念的来历和区别. 在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 

wxpython中Textctrl回车事件无效的解决方法_python

本文实例讲述了wxpython中Textctrl回车事件无效的解决方法.分享给大家供大家参考,具体如下: 今天使用wxptyhon的Textctrl控件开发客户端时遇到了一个问题, 按照HTML表单的逻辑, 我们在Textctrl里回车应该提交查询, 但是wxpython的Textctrl很奇怪, 回车了居然是像Tab作用一样跳转到下一个控件.这样的话,要完成查询, 要么是鼠标点击按钮, 要么需要按两次或者两次以上. Google了一下, 无答案, 但是得到了一些有用的资料: TextCtrl支