通用解决办法(通杀)

  1. 读取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)
    
  2. 使用 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 = value
            return decoded_value
        else:
            return value
    
    # 将所有字符串列转换为正确的编码格式
    df = df.applymap(convert_encoding)
    
  3. 按需转换,指定特殊列进行转换

    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 = value
            return decoded_value
        else:
            return value
    
    # 指定需要转换编码格式的列
    columns_to_convert = ['column1', 'column2']  # 根据实际情况修改列名
    
    # 对指定的列应用编码转换函数
    for col in columns_to_convert:
        df[col] = df[col].apply(convert_encoding)
    

完毕!!!

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部