报错 'euc_kr' codec can't encode character '\u0406' in position 227313: illegal multibyte sequence File "D:\python\post.py", line 67, in <module> encoded_data[k] = v.encode('utf-8', 'ignore').decode('utf-8').encode('euc_kr') ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UnicodeEncodeError: 'euc_kr' codec can't encode character '\u0406' in position 227313: illegal multibyte sequence
时间: 2023-08-02 15:08:20 浏览: 196
fix_id3_kr_encoding:将包含 EUC-KR 或 CP949 编码的 ID3 标签更新为 UTF-8 编码
这个错误通常是因为要编码的字符串中包含了Unicode字符,而euc_kr编码不支持Unicode字符。你可以试试使用`iconv`命令将字符串转换成euc_kr编码格式,然后再进行编码转换。
示例代码如下:
```python
import subprocess
data_encoded = {}
for k, v in data.items():
if isinstance(v, str):
# 使用iconv命令将字符串转换成euc_kr编码格式
p = subprocess.Popen(['iconv', '-f', 'utf-8', '-t', 'euc-kr'], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
out, err = p.communicate(v.encode('utf-8'))
data_encoded[k] = out
else:
data_encoded[k] = v
```
这样就可以避免出现编码错误了。如果你想保留Unicode字符,可以将`-c`参数改为`-r`,这样无法转换的字符会被替换为问号。
阅读全文