guangge0204 2020-03-26 13:25 采纳率: 0%
浏览 656

ProgrammingError: (pyodbc.ProgrammingError) ('42000', u"[42000] [FreeTDS][SQL Server]Some character(s) could not be converted into client's character set

python程序flask应用,docker部署, 数据库中有法语, 查询的时候报这上错,当然在window下面没问题, 在linux下才有这个问题,程序中用的sqlalchemy. 在linux环境下找到了odbcinst.ini文件, 但是这个文件里什么也没有,我也没有找到FreeTds的东西

File "/usr/local/lib/python2.7/site-packages/sqlalchemy/engine/result.py", line 1131, in fetchall
l = self.process_rows(self._fetchall_impl())
File "/usr/local/lib/python2.7/site-packages/sqlalchemy/engine/result.py", line 1082, in _fetchall_impl
return self.cursor.fetchall()
ProgrammingError: (pyodbc.ProgrammingError) ('42000', u"[42000] [FreeTDS][SQL Server]Some character(s) could not be converted into client's character set. Unconverted bytes were changed to question marks ('?') (2403) (SQLGetData)") (Background on this error at: http://sqlalche.me/e/f405)

数据库中那个字段的法语值是这样的:
TÉLÉCOMMUNI

linux不熟, 请遇到过的大神们帮忙给看看,多谢啊

  • 写回答

1条回答 默认 最新

  • 码农阿豪@新空间代码工作室 Java领域优质创作者 2024-07-25 17:05
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    这个问题涉及到字符集的转换问题。在Linux环境下,数据库连接会默认使用系统的字符集。由于法语中含有特殊字符,可能导致字符集转换出现问题,从而报错。 解决方法:
    1. 确保系统中已安装FreeTDS,可以使用以下命令进行安装:
    sudo apt-get install freetds-dev freetds-bin tdsodbc
    
    1. 配置odbcinst.ini文件,使其支持FreeTDS连接。可以在odbcinst.ini中添加类似以下内容:
    [FreeTDS]
    Description=FreeTDS Driver
    Driver=/usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so
    
    1. 在程序中,通过sqlalchemy设置数据库连接时,可以指定字符集。例如:
    engine = create_engine("mssql+pyodbc://username:password@servername/databasename?charset=utf8")
    
    1. 对于特殊字符的转换问题,可以尝试在程序中进行字符集的转换或处理。例如,可以使用Python的unicode函数对字符串进行处理:
    value = 'TÉLÉCOMMUNI'
    converted_value = value.encode('utf-8')
    

    通过以上方法,应该能解决在Linux环境下法语字符集转换的问题。希望对您有帮助。

    评论

报告相同问题?

悬赏问题

  • ¥15 AT89C52单片机C语言串口助手发送数据包返回值
  • ¥15 C++数组中找第二小的数字程序纠错
  • ¥50 MATLAB APP 制作出现问题
  • ¥15 wannier复现图像时berry曲率极值点与高对称点严重偏移
  • ¥15 利用决策森林为什么会出现这样·的问题(关键词-情感分析)
  • ¥15 DispatcherServlet.noHandlerFound No mapping found for HTTP request with URI[/untitled30_war_e
  • ¥15 使用deepspeed训练,发现想要训练的参数没有梯度
  • ¥15 寻找一块做为智能割草机的驱动板(标签-stm32|关键词-m3)
  • ¥15 信息管理系统的查找和排序
  • ¥15 基于STM32,电机驱动模块为L298N,四路运放电磁传感器,三轮智能小车电磁组电磁循迹(两个电机,一个万向轮),怎么用读取的电磁传感器信号表示小车所在的位置