Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

DatabaseLibrary проблема с кодировкой


(rmerkushin) #1

Всем доброго времени суток!

Столкнулся с проблемой кодировки при использовании DatabaseLibrary кейворда Execute Sql Script. Подсовываю ему sql скрипт в кодировке utf-8, в итоге в базу пишутся кракозябры где используются русские слова для вставки в базу, с кодировкой windows 1251 такая же история.

Пытался поправить метод execute_sql_script в самой либе, заменил sqlScriptFile = open(sqlScriptFileName) на sqlScriptFile = codecs.open(sqlScriptFileName, "r", "utf-8"), но при запуске выдает ошибку UnicodeEncodeError: 'charmap' codec can't encode characters in position 219-223: character maps to <undefined>. Через Python Commandline эта же операция проходит успешно.

Помогите разобраться.


(rmerkushin) #2

Разобрался с проблемой сам. Дело было в библиотеке cx_Oracle. Перед подключнием нужно указывать кодировку. Думаю такая проблема будет только в виндах.

Решается следующим образом. В библиотеке DatabaseLibrary в методох подключения в самое начало нужно добавить строку:

 

os.environ['NLS_LANG'] = 'American_America.AL32UTF8'

Возвращаемое значение с кириллицой в Databaselibrary RobotFramework