QA环境服务器上的正则表达式问题

时间:2019-07-05 23:55:28

标签: java encoding urlencode

我想对String进行编码,以使用公共密钥将其发送到第三方服务。它可以在本地PC(Windows 7)上正常运行,但是当部署在服务器(Red Hat Linux Server)上时,它无法按预期工作,因此服务返回错误

第三方公司提供了一个使用服务的示例,该示例用于实现给定的客户端:

PGPEncryptor encryptor = new PGPEncryptor();
String name = encryptor.encrypt(request.getName(), publicKey);

name = URLEncoder.encode(name , StandardCharsets.UTF_8.toString())
                .replaceAll("\\%0D%0A", "\\\\r\\\\n")
                .replaceAll("%3A", ":")
                .replaceAll("\\+", " ")
                .replaceAll("\\%2F", "/")
                .replaceAll("\\%2B", "+")
                .trim();

在本地PC上测试时,它会给出

-----BEGIN PGP MESSAGE-----\r\nVersion: BCPG v1.23\r\n\r\nhQEMA....(A LOT OF CHAR)......pK9Q\r\n-----END PGP MESSAGE-----\r\n

但是在服务器上的输出是

-----BEGIN PGP MESSAGE-----%0AVersion: BCPG v1.23%0A%0AhQEMA....(A LOT OF CHAR).........DVI6O%0A-----END PGP MESSAGE-----%0A

好像之后URLEncoder.encode上的结果没有被replaceAll函数所取代。

为什么会这样?

编辑:

URLEncoder.encode之前的Windows中,

名称中的值是:

-----BEGIN PGP MESSAGE-----
Version: BCPG v1.23

hQEMA9CJDjcM+dYnAQf/Tf1a3cdlBU441cW+Xf6RLPUQ+EebbPP2RvU6zx/wxhci
YJnJqCHzyUVnIVEeVgeMgqAYDgtQAHmywnzB6wL3BMkVl1Ok108/1/zjEbKKyLeX
tpX3ovW0Rcs25CwqOgybhyejHI2pZOz58T2LbhtZnMPn4jQrp1WuAbOqa4iSMIKc
48AQY8yeksbOHmnQAJi98wNc+dRoUQMlHX3GpWT1/fI2U5m20yMuPlZLyiax6ER6
dJ44EVypxPyjmEULgXnGw7vp76P43kwO5mzQbVHU2EXY9TsERieBqE/+/0AHrDtf
p2yY4kN2JSaEnHXm38Hh4UIszXG2WRm65bkJEzuxwMkhDOqGhbeJdGcjnGkMG45F
gbxTqsIzeRx9895LB0K8C90M
=Yu1E
-----END PGP MESSAGE-----

0 个答案:

没有答案