在使用Streamlit制作一个NLP模型(自然语言处理模型)应用的时候,发现输出的中文是乱码,用百度和bing搜索,都没有在第一页找到答案。问ChatGPT,它提示用io库的ByteIO处理一下。问百度文心一言,它说检查文件编码格式。好吧,都不太准确。

自己去看源代码,发现输出的str字符串有这样一句处理:

if st.button('🧠 Think'):
    answer = get_answer(question_text_area)

    escaped = answer.encode('utf-8').decode('unicode-escape')
    # Display answer
    st.caption("Answer :")
    st.markdown(escaped)

感觉先encode再decode在python3下根本没有必要啊!将这句注释掉,改成:

if st.button('🧠 Think'):
    answer = get_answer(question_text_area)
    # escaped = answer.encode('utf-8').decode('unicode-escape')
    escaped = answer
    # Display answer
    st.caption("Answer :")
    st.markdown(escaped)

也就是去掉了编码和解码,重新执行:

treamlit run app_streamlit.py

哇,终于解决了streamlit下的中文乱码问题了。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐