Oracle 数据插入引发“ascii”编解码器无法对位置 87 中的字符“\xea”进行编码:序号不在范围内 (128) 错误

Sij*_*ari 3 python oracle cx-oracle

我正在尝试将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)
   .....
Run Code Online (Sandbox Code Playgroud)

我的表结构:

CREATE TABLE MESSAGE  (   
    language  VARCHAR2(12) NOT NULL, 
    message  NVARCHAR2(350) NOT NULL
);
Run Code Online (Sandbox Code Playgroud)

我不确定是否需要设置任何内容以将其他字符插入到数据库中。

Ant*_*nga 7

如果要设置环境变量 NLS_LANG,则必须在创建任何连接之前进行设置;否则,它将不起作用。然而,更好的是使用以下内容来创建连接,因为这不依赖于环境变量:

connection = cx_Oracle.connect("user/password@connectString",
        encoding="UTF-8", nencoding="UTF-8")
Run Code Online (Sandbox Code Playgroud)