Python连接sqlserver遇到问题

用Python连接数据库,测试是通过的

img

但是用插入语句插入后,运行结果是乱码

img

img

我回到数据库看了一眼,在数据库里是正常的

img

我查了一下


SELECT  COLLATIONPROPERTY('Chinese_PRC_Stroke_CI_AI_KS_WS', 'CodePage')

img

显示结果为936,如何把数据库的编码也改成utf8呢?或者还有没有其他好的处理方法?

链接数据库要设置字符集,还有创建数据库表设置成utf8 ,可以使用navivat第三方工具修改字符集比较方便

conn = pymssql.connect(server, user, password, database, charset='cp936')

链接字符串中增加charset设置

UTF8支持的不太友好,可以用UTF-16,最好直接用默认的,cp936中文编码吧

1、SQL版的乱码问题还是出现在SQL SERVER的安装设置上,936代表简体中文,系统默认编码格式
思路:
借鉴这个图文的链接讲解,看是否重新设置utf-8成功:https://zhidao.baidu.com/question/1712406353240873340.html

其实是有两个思路:

1.对python,查询的结果做转码处理。
2.是对sqlserver数据编码进行更改。

但是个人建议,是对python 查询结果进行转码处理。好处是,代码的容错、兼容、可移植性都比较高。而该数据库编码,则没有这些好处,在实际部署阶段,亦然要做数据库的处理;当大公司中,有复用sqlserver的需求时,更改数据库的编码就将不在现实。

数据库既然显示没问题你想的是python查找出来不乱码显示吧
connect = pymssql.connect('服务器', '用户名', '密码', '数据库表',charset="utf8")

  1. 你在创建数据库的时候就要将其设置为utf8
    create database 库名 charset=utf8;
  2. 在你的python文件的首行写上这段代码
# -*- coding:utf-8 -*-

遇到乱吗问题 肯定是数据存储的地方和读取的地方编解码器方式不一样导致的,所以解决方法也很简单 将两者编码一致就好了
1 可以修改数据库的编码方式,建表的时候指定字符集u8
2 修改代码的链接字符集 u8,不清楚兄弟是用什么方式连接的数据库,指定一下编码就行了例如方法一:
sql = " CONVERT(nvarchar(100), stationname)stationname,from table"
中文字字符串用CONVERT(nvarchar(100), name)进行转换

方法二: charset="utf-8"替换为 charset="GBK"这里GBK要大写;

自己设置 url=jdbc:mysql://localhost/mybatisdb?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&characterEncoding