При вставке данных Oracle кодек 'ascii' не может кодировать символ '\ xea' в позиции 87: порядковый номер не в диапазоне (128), ошибка - PullRequest
0 голосов
/ 01 июня 2018

Я пытаюсь вставить Portuguese текст в мою таблицу.Но это дает 'ascii' codec can't encode character '\xea' ошибку.

Вот что я делаю:

   os.environ["NLS_LANG"] = ".AL32UTF8"

   query = "INSERT INTO MESSAGE (MESSAGE,LANGUAGE) VALUES (:MESSAGE,:LANGUAGE)"
   data = {'MESSAGE': '..... assistência para ajuda responda AJUDA Sua', 'LANGUAGE': 'Portuguese'}
   cursor = conn.cursor()
   cursor.execute(query, data)
   .....

Структура моей таблицы:

CREATE TABLE MESSAGE  (   
    language  VARCHAR2(12) NOT NULL, 
    message  NVARCHAR2(350) NOT NULL
);

Я не уверен, еслиМне нужно установить что-нибудь, чтобы вставить другие символы в базу данных.

1 Ответ

0 голосов
/ 03 июня 2018

Если вы собираетесь установить переменную среды NLS_LANG, вы должны сделать это, прежде чем создавать какое-либо соединение;иначе это не будет иметь никакого эффекта.Однако еще лучше использовать следующее для создания соединения, поскольку это не зависит от переменных среды:

connection = cx_Oracle.connect("user/password@connectString",
        encoding="UTF-8", nencoding="UTF-8")
...