PowerBuilder - различная кодировка PB 6.5 - PB 10.5 - PullRequest
0 голосов
/ 06 июня 2011

Я создал функцию шифрования для приложения в PB 6.5, она отлично работает, она берет данные человека, шифрует их и сохраняет полученную строку в базе данных.С другой стороны, у меня есть доступ к этим данным в приложении, встроенном в PB 10.5 (потому что оба приложения совместно используют базу данных).

Проблема в том, что я не могу восстановить данные правильно :( Я гуглил их и прочитал некоторую документацию. Я знаю, что PB6.5 использует кодификацию ANSI, а PB10.5 использует UTF-16LE, поэтому я попробовал функцииЯ нашел в документации, чтобы увидеть, что я получаю:

lb_text = Blob(original_string, EncodingANSI!)
ls_string1 = String(lb_text, EncodingANSI!)
ls_string2 = String(lb_text, EncodingUTF16LE! )

ls_string1 дал мне строку, которая очень похожа на исходную строку, закодированную с PB6.5, а ls_string2 дала мне строку, которая является последовательностью'квадратный символ': 㔐

Мой вопрос:

Есть ли способ стандартизировать кодировку между различными версиями PB? или ...

Есть ли функция (в PB10.5) для преобразования строки в нужную мне кодировку?

1 Ответ

0 голосов
/ 07 июня 2011

Проблема была в моей функции шифрования: я использовал строку (ascii_string) с ASCII символами от 1 до 255 для кодирования данных, но я обнаружил, что в позициях 1 до 31 присутствуют «странные» символы .

Итак, в PB6.5 я сделал:

for i=32 to 255
   ascii_string += string(char(i))
next

и для PB 10,5:

for i=32 to 256
  aux = Blob(char(i))
  ascii_string += String(aux, EncodingANSI!)
next

и это работает для каждой версии!

...