UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0xb2 in position 1972: illegal multibyte sequence

在使用gradio的Chatbot时,我的电脑报出了以下问题:

C:\Users\70262\Desktop\new>python\python.exe demo.py
Traceback (most recent call last):
  File "C:\Users\70262\Desktop\new\demo.py", line 1, in <module>
    import gradio as gr
  File "C:\Users\70262\Desktop\new\python\Lib\site-packages\gradio\__init__.py", line 3, in <module>
    import gradio._simple_templates
  File "C:\Users\70262\Desktop\new\python\Lib\site-packages\gradio\_simple_templates\__init__.py", line 1, in <module>
    from .simpledropdown import SimpleDropdown
  File "C:\Users\70262\Desktop\new\python\Lib\site-packages\gradio\_simple_templates\simpledropdown.py", line 6, in <module>
    from gradio.components.base import FormComponent
  File "C:\Users\70262\Desktop\new\python\Lib\site-packages\gradio\components\__init__.py", line 40, in <module>
    from gradio.components.multimodal_textbox import MultimodalTextbox
  File "C:\Users\70262\Desktop\new\python\Lib\site-packages\gradio\components\multimodal_textbox.py", line 28, in <module>
    class MultimodalTextbox(FormComponent):
  File "C:\Users\70262\Desktop\new\python\Lib\site-packages\gradio\component_meta.py", line 198, in __new__
    create_or_modify_pyi(component_class, name, events)
  File "C:\Users\70262\Desktop\new\python\Lib\site-packages\gradio\component_meta.py", line 92, in create_or_modify_pyi
    source_code = source_file.read_text()
                  ^^^^^^^^^^^^^^^^^^^^^^^
  File "pathlib.py", line 1028, in read_text
UnicodeDecodeError: 'gbk' codec can't decode byte 0xb2 in position 1972: illegal multibyte sequence

以下是gradio的官方示例:

import gradio as gr
import random
import time

with gr.Blocks() as demo:
    chatbot = gr.Chatbot()
    msg = gr.Textbox()
    clear = gr.ClearButton([msg, chatbot])

    def respond(message, chat_history):
        bot_message = random.choice(["How are you?", "I love you", "I'm very hungry"])
        chat_history.append((message, bot_message))
        time.sleep(2)
        return "", chat_history

    msg.submit(respond, [msg, chatbot], [msg, chatbot])

if __name__ == "__main__":
    demo.launch()

其中报出的最后一行错误指出是编码器的问题,但我在代码前添加# coding=utf-8以及切换vscode的编码器都没有任何效果

最后找到pathlib下的read_text:

        encoding = io.text_encoding(encoding)
        with self.open(mode='r', encoding=encoding, errors=errors) as f:
            return f.read()

并将其改为

        encoding = io.text_encoding(encoding)
        try:
            with self.open(mode='r', encoding=encoding, errors=errors) as f:
                return f.read()
        except UnicodeDecodeError:
            with self.open(mode='r', encoding='utf-8', errors=errors) as f:
                return f.read()

后,示例代码正常运行

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值