Javascript сравнить длину подстроки возвращает неверный результат - PullRequest
1 голос
/ 06 марта 2020

Я пытаюсь создать зашифрованные данные и сохранить их на сервере, а затем расшифровать. У меня проблема с substr ... Случай:

Str, созданный моей криптографической функцией:

 uÛÀ0ÊydhÖà7yqê}X7hONüRéjÜÉq.NyÖaZÜdGK!Öhy|CGPOyqê}HïchFü.PjÜçêÈöoièféNÜ.... (260 chars)

Когда я пытаюсь расшифровать этот str сразу после создания (в браузере ):

 let name = str.substr(0,25)
 let occup = str.substr(25,35)

 console.log(name+' = '+name.length) -> uÛÀ0ÊydhÖà7yqê}X7hONüRéjÜ = 25
 console.log(occup+' = '+occup.length) -> Éq.NyÖaZÜdGK!Öhy|CGPOyqê}HïchFü.PjÜ = 35

Если я применю расшифровку al go к каждому подстрану, результаты будут ожидаемыми.

Зашифрованная строка затем отправляется на сервер с помощью Ajax + PHP и записано в .dat файле.

Я использую fetch, чтобы получить зашифрованные данные обратно в браузере и пытаюсь расшифровать их снова:

 let name = crypt.substr(0,25)
 let occup = str.substr(25,35)

 console.log(name+' = '+name.length) -> uÛÀ0ÊydhÖà7yqê}X7hONüRéj = 25
 console.log(occup+' = '+occup.length) -> ÜÉq.NyÖaZÜdGK!Öhy|CGPOyqê}HïchFü.Pj = 35

... но вы можете сосчитать имя получило 24 символа вместо 25. Последний символ name (Ü) теперь является первым из occup, который получил 35 автомобилей.

Я предполагаю, что это проблема кодирования на некоторых знаки при записи данных на сервер. Я пытаюсь с substr(0,25) и substring(0,25), но оба результата неверны.

Есть ли способ решить эту проблему

  1. при отправке данных или
  2. при возврате str

?

...