python连接oracle数据库,传参是汉字时报错UnicodeEncodeError: 'ascii' codec can't encode characters in position 32-3

博客主要讲述Python连接Oracle数据库时,传参为汉字会报错。解决分两步,一是在Python安装目录下新建sitecustomize.py文件并写入特定内容,保存后重启Python窗口或PyCharm;二是在Python代码头部添加指定代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述:

python连接oracle数据库,传参是汉字时报错:UnicodeEncodeError: 'ascii' codec can't encode characters in position 32-34: ordinal not in range(128)

解决办法:

分两步:

1、网上说的办法,在python的安装目录C:\python\Lib\site-packages里新建一个文件,文件名叫:sitecustomize.py

里面的内容是:

#coding=utf8
import sys
reload(sys)
sys.setdefaultencoding('utf8')

保存,重启python窗口或者pycharm

ps:C:\python\Lib\site-packages  这个是我的本地python安装目录

2、在你的python代码里,头上加上下面的代码:

import os
os.environ['NLS_LANG'] = 'SIMPLIFIED CHINESE_CHINA.UTF8'

然后就可以了

FLASK_APP = app.py FLASK_ENV = development FLASK_DEBUG = 0 In folder C:/Users/86150/PycharmProjects/知了OA C:\Users\86150\PycharmProjects\smart_backen\.venv\Scripts\python.exe -m flask run * Serving Flask app 'app.py' * Debug mode: off WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. * Running on http://127.0.0.1:5000 Press CTRL+C to quit [2025-06-18 10:00:00,847] ERROR in app: Exception on /user/mail/test [GET] Traceback (most recent call last): File "C:\Users\86150\PycharmProjects\smart_backen\.venv\Lib\site-packages\flask\app.py", line 1511, in wsgi_app response = self.full_dispatch_request() ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\86150\PycharmProjects\smart_backen\.venv\Lib\site-packages\flask\app.py", line 919, in full_dispatch_request rv = self.handle_user_exception(e) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\86150\PycharmProjects\smart_backen\.venv\Lib\site-packages\flask\app.py", line 917, in full_dispatch_request rv = self.dispatch_request() ^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\86150\PycharmProjects\smart_backen\.venv\Lib\site-packages\flask\app.py", line 902, in dispatch_request return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args) # type: ignore[no-any-return] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\86150\PycharmProjects\知了OA\blueprint\user.py", line 15, in mail_test mail.send(message) File "C:\Users\86150\PycharmProjects\smart_backen\.venv\Lib\site-packages\flask_mail\__init__.py", line 540, in send message.send(connection) File "C:\Users\86150\PycharmProjects\smart_backen\.venv\Lib\site-packages\flask_mail\__init__.py", line 482, in send connection.send(self) File "C:\Users\86150\PycharmProjects\smart_backen\.venv\Lib\site-packages\flask_mail\__init__.py", line 180, in send message.as_bytes(), ^^^^^^^^^^^^^^^^^^ File "C:\Users\86150\PycharmProjects\smart_backen\.venv\Lib\site-packages\flask_mail\__init__.py", line 432, in as_bytes return self._message().as_bytes() ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\86150\AppData\Local\Programs\Python\Python312\Lib\email\message.py", line 208, in as_bytes g.flatten(self, unixfrom=unixfrom) File "C:\Users\86150\AppData\Local\Programs\Python\Python312\Lib\email\generator.py", line 117, in flatten self._write(msg) File "C:\Users\86150\AppData\Local\Programs\Python\Python312\Lib\email\generator.py", line 200, in _write self._write_headers(msg) File "C:\Users\86150\AppData\Local\Programs\Python\Python312\Lib\email\generator.py", line 432, in _write_headers self._fp.write(self.policy.fold_binary(h, v)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\86150\AppData\Local\Programs\Python\Python312\Lib\email\policy.py", line 202, in fold_binary return folded.encode(charset, 'surrogateescape') ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UnicodeEncodeError: 'ascii' codec can't encode characters in position 51-56: ordinal not in range(128) 127.0.0.1 - - [18/Jun/2025 10:00:00] "GET /user/mail/test HTTP/1.1" 500 -
最新发布
06-19
UnicodeEncodeError是一个常见的编码错误,它表示在将Unicode字符编码为指定编码格式(如ASCII)出现问题。这个错误通常发生在尝试将非ASCII字符(如中文、日文、韩文等)编码为ASCII字符。 解决这个错误的方法是使用正确的编码格式来处理非ASCII字符。以下是一些可能的解决方法: 1. 使用正确的编码格式进行编码:在处理非ASCII字符,确保使用正确的编码格式进行编码。例如,在Python中,可以使用`encode()`方法将字符串编码为指定的编码格式。例如,将字符串编码为UTF-8格式:`string.encode('utf-8')`。 2. 设置默认编码格式:在某些情况下,可以通过设置默认编码格式来解决编码问题。在Python中,可以使用`sys.setdefaultencoding()`方法来设置默认编码格式。但是需要注意的是,这种方法并不推荐使用,因为它可能会引起其他问题。 3. 使用合适的编码格式进行文件操作:如果在处理文件出现编码错误,可以使用适当的编码格式打开文件。例如,在Python中,可以使用`open()`函数的`encoding`参数指定文件的编码格式。例如:`open('file.txt', encoding='utf-8')`。 4. 使用合适的编码格式进行网络请求:如果在进行网络请求出现编码错误,可以使用适当的编码格式来处理响应数据。例如,在Python中,可以使用`requests`库发送网络请求,并使用`response.encoding`属性来指定响应数据的编码格式。例如:`response.encoding = 'utf-8'`。 请注意,具体的解决方法取决于你所使用的编程语言和环境。以上提供的方法是一些常见的解决方案,但可能需要根据具体情况进行调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值