通用解决办法(通杀)
-
读取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 = value return decoded_value else: 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 = 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)
完毕!!!
本站资源均来自互联网,仅供研究学习,禁止违法使用和商用,产生法律纠纷本站概不负责!如果侵犯了您的权益请与我们联系!
转载请注明出处: 免费源码网-免费的源码资源网站 » 解决 pandas 读取 SQL Server 中的数据时,遇到 varchar 属性的中文字符显示乱码的问题(新)
发表评论 取消回复