網站首頁 編程語言 正文
UnicodeEncodeError: ‘utf-8‘ codec can‘t encode characters in position解決方法
作者:CrazyCosin 更新時間: 2022-05-13 編程語言一、問題背景
爬蟲采集來的文件名中含有emoji以及全角半角符號,但是采集時并沒有處理,原封不動存儲到了數據中。現在有個需求,從數據庫中取出數據,發送跟客戶端,客戶端拿這文件名寫入到文件緩存。問題出現在緩存到了文件,再從文件取出來的時候,報了unicodeError。
二、解決方法?
1.首先服務端發送特殊字符的時候,json dumps的時候要指定ensure_ascii為False,不編碼。保留原字符。
2.這里其實有個標準輸出問題,客戶端拿到傳輸的字符,json loads 但是emoji或者/u3000這種全角符號依然會存在,但是使用print打印卻不會顯示。
ss = '/電視劇/換子成龍 02 主 演: 劉愷威 杜淳 馬雅舒 程莉莎.CJBVu5Jsr7I.mp4/shot_00000298_frame_00035267.jpg'
d = {'file_path': ss}
f = json.dumps(d, ensure_ascii=False)
# f 的內容
# '{"file_path": "/電視劇/換子成龍 02 主\u3000演: 劉愷威 杜淳 馬雅舒 程莉莎.CJBVu5Jsr7I.mp4/shot_00000298_frame_00035267.jpg"}'
k = json.loads(f)
# k 的內容
# {'file_path': '/電視劇/換子成龍 02 主\u3000演: 劉愷威 杜淳 馬雅舒 程莉莎.CJBVu5Jsr7I.mp4/shot_00000298_frame_00035267.jpg'}
# 這時候使用print打印
# 顯示 /電視劇/換子成龍 02 主 演: 劉愷威 杜淳 馬雅舒 程莉莎.CJBVu5Jsr7I.mp4/shot_00000298_frame_00035267.jpg 結果是正常的
# 但是寫如文件
with open('test.txt',w) as f:
f.write(k['file_path'])
# 在文件中打開 依然顯示\u3000這個字符
# 采用標準輸出流重定向
with open('test.txt', 'wt') as f:
print(k['file_path'], file=f)
# 在文件中打開,顯示正常不含\u3000
原文鏈接:https://blog.csdn.net/CrazyCosin/article/details/121514861
相關推薦
- 2022-07-26 pyspark中udf寫法及其使用
- 2022-12-08 oracle自動生成uuid的實現方法_oracle
- 2022-09-16 利用Python第三方庫xlwt寫入數據到Excel工作表實例代碼_python
- 2022-07-09 給復雜的數組結構數據換key
- 2022-08-26 docker搭建memcached的詳細步驟_docker
- 2022-06-21 Git基礎之git與SVN版本控制優缺點區別分析_其它綜合
- 2022-10-25 Python第三方常用模塊openpyxl的簡單介紹_python
- 2022-06-16 C#中執行SQL的幾種方法講解_C#教程
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支