通用解决办法(通杀)
-
读取SQL server中的数据
import pandas as pd from sqlalchemy import create_engine# 根据实际情况修改服务器地址、数据库名、用户名和密码 server = 'your_server_address' database = 'your_database_name' username = 'your_username' password = 'your_password'# 使用 utf-8 或 gbk 字符集,根据实际情况选择 connection_str = f'mssql+pyodbc://{username}:{password}@{server}/{database}?driver=ODBC+Driver+17+for+SQL+Server&charset=utf-8' engine = create_engine(connection_str)# 读取数据 df = pd.read_sql('SELECT * FROM your_table', engine)
-
使用 pandas 的 applymap() 函数将字符串列转换为正确的编码格式(全部转换):
def convert_encoding(value):if isinstance(value, str):try:# 尝试使用 utf-8 编码解码decoded_value = value.encode('raw_unicode_escape').decode('utf-8')except UnicodeDecodeError:try:# 如果 utf-8 解码失败,尝试使用 gbk 编码解码decoded_value = value.encode('raw_unicode_escape').decode('gbk')except UnicodeDecodeError:# 如果两种编码都无法解码,返回原始值decoded_value = valuereturn decoded_valueelse:return value# 将所有字符串列转换为正确的编码格式 df = df.applymap(convert_encoding)
-
按需转换,指定特殊列进行转换
def convert_encoding(value):if isinstance(value, str):try:# 尝试使用 utf-8 编码解码decoded_value = value.encode('raw_unicode_escape').decode('utf-8')except UnicodeDecodeError:try:# 如果 utf-8 解码失败,尝试使用 gbk 编码解码decoded_value = value.encode('raw_unicode_escape').decode('gbk')except UnicodeDecodeError:# 如果两种编码都无法解码,返回原始值decoded_value = valuereturn decoded_valueelse:return value# 指定需要转换编码格式的列 columns_to_convert = ['column1', 'column2'] # 根据实际情况修改列名# 对指定的列应用编码转换函数 for col in columns_to_convert:df[col] = df[col].apply(convert_encoding)
完毕!!!