You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python 3中正确读取非UTF-8编码的字符串?

解决Windows-1252编码SQL字符串的Python加载问题

针对你遇到的utf-8解码错误,核心问题是Python默认以utf-8编码读取内容,但你的德语SQL文件实际是windows-1252编码,以下是两种场景的解决办法:

1. 从文件读取SQL字符串时

直接在open()函数中指定文件的实际编码为windows-1252,让Python用正确的编码解析内容:

with open('你的德语SQL文件路径.sql', 'r', encoding='windows-1252') as sql_file:
    sql_insert_content = sql_file.read()

读取完成后,sql_insert_content会被转换为Python的Unicode字符串,后续执行SQL时不会出现编码问题。

2. 若SQL字符串硬编码在Python脚本中

  • 如果你脚本文件本身是以windows-1252编码保存的,在脚本第一行添加编码声明:
    # -*- coding: windows-1252 -*-
    
    这样Python会用指定编码解析脚本中的字符串。
  • 更稳妥的方式是将脚本保存为utf-8编码,把德语中的特殊字符用Unicode转义表示,比如ä写成\u00e4,ö写成\u00f6,这样无论在哪种环境下都能正确识别。例如:
    sql_insert = "INSERT INTO table_name (col) VALUES ('M\u00fcller');"
    

执行SQL的注意事项

使用Python的sqlite3库执行SQL时,无需额外设置编码,因为该库默认支持Unicode字符串,只要你读取或定义的SQL内容是正确的Unicode对象,直接执行即可:

import sqlite3

conn = sqlite3.connect('你的数据库文件.db')
cursor = conn.cursor()
cursor.execute(sql_insert_content)
conn.commit()
conn.close()

内容的提问来源于stack exchange,提问作者Massimo Manca

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 09:37:08