python 运行 execjs 出现错误 UnicodeEncodeError: ‘gbk‘ codec can‘t encode character ‘\ufffd‘

异常解读

该异常的格式一般为:

UnicodeEncodeError: ‘gbk’ codec can’t encode character ‘\ufffd’ in position 160: illegal multibyte sequence

该异常出现的场景为在 Windows 电脑下使用 Python execjs 运行指定的 JS 文件,但 JS 文件中包含中文

异常解决方案

该问题解决需要 修改 你电脑 Python 安装目录下 lib 文件夹里面的一个文件,名字叫做 subprocess.py

例如在我本地为 :
python 运行 execjs 出现错误 UnicodeEncodeError: ‘gbk‘ codec can‘t encode character ‘\ufffd‘
通过任意文本编辑器打开该文件,在文件中检索 encoding,找到如下位置:
python 运行 execjs 出现错误 UnicodeEncodeError: ‘gbk‘ codec can‘t encode character ‘\ufffd‘
修改 encoding=Noneencoding = "utf-8"

代码位置:

    def __init__(self, args, bufsize=-1, executable=None,
                 stdin=None, stdout=None, stderr=None,
                 preexec_fn=None, close_fds=_PLATFORM_DEFAULT_CLOSE_FDS,
                 shell=False, cwd=None, env=None, universal_newlines=False,
                 startupinfo=None, creationflags=0,
                 restore_signals=True, start_new_session=False,
                 pass_fds=(), *, encoding="utf-8", errors=None):
        """Create new Popen instance."""

保存文件,解决问题。

附录

本系列文章只供记录 Python 日常开发过程中 偶遇 BUG,提供给学生作为参考数据与解决方案用,属于记录型博客,有缘分看到的读者希望可解决你的问题。

错误提示样板,可以与你的错误进行比对。

Traceback (most recent call last):
  File "g:/MyFiles/xiaoke/a.py", line 38, in <module>
    zh("")
  File "g:/MyFiles/xiaoke/a.py", line 19, in zh
    obj = docjs.eval('obj')
  File "F:\P3.6\lib\site-packages\execjs\_abstract_runtime_context.py", line 27, in eval
    return self._eval(source)
  File "F:\P3.6\lib\site-packages\execjs\_external_runtime.py", line 78, in _eval
    return self.exec_(code)
  File "F:\P3.6\lib\site-packages\execjs\_abstract_runtime_context.py", line 18, in exec_
    return self._exec_(source)
  File "F:\P3.6\lib\site-packages\execjs\_external_runtime.py", line 87, in _exec_
    output = self._exec_with_pipe(source)
  File "F:\P3.6\lib\site-packages\execjs\_external_runtime.py", line 103, in _exec_with_pipe
    stdoutdata, stderrdata = p.communicate(input=input)
  File "F:\P3.6\lib\subprocess.py", line 863, in communicate
    stdout, stderr = self._communicate(input, endtime, timeout)
  File "F:\P3.6\lib\subprocess.py", line 1106, in _communicate
    self._stdin_write(input)
  File "F:\P3.6\lib\subprocess.py", line 801, in _stdin_write
    self.stdin.write(input)
UnicodeEncodeError: 'gbk' codec can't encode character '\ufffd' in position 160: illegal multibyte sequence

爬虫 100 例课程宣传

151只宝可梦(神奇宝贝)倒背的我,却连元素周期表都背不过 -- Python 爬虫小课 3-9
爬虫百例教程导航链接 : https://blog.csdn.net/hihell/article/details/86106916

这个错误通常发生在使用'gbk'编码器时,尝试编码一个无效的多字节序列字符。根据引用和引用的描述,这个错误可以通过将文件的编码更改为'UTF-8'来解决。这可以在编辑器中修改项目的编码设置来实现。这样做后,再次运行代码即可避免此错误的发生。123 #### 引用[.reference_title] - *1* [UnicodeEncodeError: ‘gbkcodec can‘t encode character ‘\xa9‘ in position 6870: illegal ...](https://blog.csdn.net/qq_37077573/article/details/123146044)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}} ] [.reference_item] - *2* [解决python UnicodeEncodeError: ‘gbkcodec can‘t encode character ‘\xb5‘ in position 255: ...](https://blog.csdn.net/m0_57781407/article/details/124415725)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}} ] [.reference_item] - *3* [UnicodeEncodeError: 'gbk' codec can't encode character](https://blog.csdn.net/Jasmine_2018/article/details/78845830)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}} ] [.reference_item] [ .reference_list ]
评论 31
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦想橡皮擦

如有帮助,来瓶可乐

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值