После того, как я перешел с PB7 на 10.5, у меня возникла проблема со старым хранилищем базы данных SQL Server. Арабский символ показывает символы в окне данных как странные символы, которые не имеют значения, например ÓíÇÑÉ ÕÛíÑÉ?
Проблема с кодировкой после преобразования PB7 в PB10.5
Ответы (1)
Две вещи, на которые нужно обратить внимание при переходе на PB10 или выше. Строки в вызовах внешних функций и любые данные, прочитанные в файлах, таких как INI-файлы или функции чтения файлов. Причина в том, что PB10 была версией, в которой строки основывались на Unicode, а не на ANSI.
Вы начнете сталкиваться с проблемами, когда ваши строковые данные содержат символы мусора, когда раньше они работали нормально. Хорошей новостью является то, что PB предоставляет способ преобразования строки в требуемый формат, и есть функции для обоих.
Кодировка PB10 по умолчанию — UTF-16, прямой порядок байтов (EncodingUTF16LE!)
В PB10 функции PowerScript Len(), Left(), Mid() и Right() основаны на символах Unicode и эквивалентны существующим функциям LenW(), LeftW(), MidW() и RightW(). .
Для работы со строками как с байтами или символами ASCII вместо символов Unicode был добавлен новый набор функций LenA(), LeftA(), MidA() и RightA(). Когда применяются функции «A», PowerBuilder преобразует строку Unicode в строку DBCS в зависимости от языкового стандарта компьютера, а затем применяет операцию. это любое чтение/запись файлов, потому что около PB10 он перешел на юникод. PB преобразовал все существующие функции в Unicode и создал новые версии функций. Так в PB10 функции Powerscript Len(), Left(), Mid() были изменены на юникод и новые функции Len.
Blob lbl_data
lbl_data = Blob("Hello World!", EncodingANSI!)
ls_data = String(lbl_data, EncodingANSI!)
// PB10 and higher
li_FileNum = FileOpen("MyFile.txt", TextMode!, Read!, EncodingANSI!)
// PB9 and lower you didn't need EncodingANSI!
//li_FileNum = FileOpen("MyFile.txt", TextMode!)
Что произойдет, если вы не добавите EncodingANSI! ? Все данные, которые вы получите из внешних файлов, будут нечитаемыми мусорными символами. Это самая серьезная проблема при обновлении до PB10 и выше, но ее очень просто решить, как только вы ее выясните.
Я не думаю, что ваши проблемы с базой данных связаны с кодировкой, но это возможно. Если вы видите мусорные символы, у вас, вероятно, есть несоответствия с кодировкой.