Проблема с регулярным выражением на сервере QA Environment - PullRequest
1 голос
/ 06 июля 2019

Я хочу закодировать строку, чтобы отправить ее сторонней службе с использованием открытого ключа.Он отлично работает на локальном ПК (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();

При тестировании на локальном ПК это дает

-----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 после.

Есть идеи, почему это происходит?

РЕДАКТИРОВАТЬ:

Значение от name в Windows до URLEncoder.encode равно:

-----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-----
...