(查找数据库名在文章中间,自己往下翻吧,不单拎出来了)
vs自带数据库sql server的中文插入乱码问题:
如图所示,我插入表的中文变成了问号
解决思路:
1、是我的表建立时字段类型不支持中文?
2、数据库的排序规则错误?
3、写入数据库时的数据编码问题?
我试了一下,在表格内输入中文字符能显示,且能按中文正常读取,我的问题不属于第一种,排除
我去度娘一下,需要修改编码格式
百度经验的文章教了该怎么做:
https://jingyan.baidu.com/article/c74d600060804a0f6a595dfd.html
然而我更改时发现我的数据库名错误,并且属性里也没有排序规则这项,如图
那我现在是什么格式呢,先提供两种 不适用于 我的状况的方法:
----------------------------------------------------------------------------------------------------------------------------------------
数据库上右键,新建查询
SELECT SERVERPROPERTY('Collation')
//用来得知正在运行的SQL Server实例的服务器排序规则
结果如下:
SELECT COLLATIONPROPERTY('Chinese_PRC_Stroke_CI_AI_KS_WS', 'CodePage')
//以中文显示当前数据库编码方式
//936 简体中文GBK
//950 繁体中文BIG5
//437 美国/加拿大英语
//932 日文
//949 韩文
//866 俄文
//65001 unicode UFT-8
结果:
为什么不适用呢,是因为这两种方法查询的都是当前数据库,而我用的是vs自带的数据库,查询出来的却不是我自己建的那个,而是更上层的数据库。
所以这两种方法有用,但不试用于我的情况
--------------------------------------------------------------------------------------------------------------------------------------
我用如下代码:
Select * from sys.databases
//列出SQL Server中的所有数据库
结果
根据日期,我找到第六项,也就是那一长串,是我的数据库名,很奇怪他为什么那么长,因为我建的时候什么都没设置,就选了个路径就保存了,应该是直接把路径设做了数据库名
根据结果的collation_name可以看出数据库的编码格式,是为SQL_Latin1_General_CP1_CI_AS,显然不支持中文写入
需要将其更改为 Chinese_PRC_CI_AS
更改的代码:
alter database[你的数据库名] collate Chinese_PRC_CI_AS;
如果提示错误告诉你 混合用户不能更改编码
需要先改为单用户,更改为collate Chinese_PRC_CI_AS后再改成混合用户
代码如下:
alter database[你的数据库名] set single_user with rollback immediate;
go
alter database[你的数据库名] collate Chinese_PRC_CI_AS;
go
alter database[你的数据库名] set multi_user;
go
这回你再用刚才的Select * from sys.databases查看你的编码是否正确;并且表里也能看出当前是混合用户还是单用户以及其他信息
这回在重新写入中文字符到数据库就发现没问题了
完成。
我的问题在解决思路的第二步就完成了
对于第三步的情况,据网上说在连接数据库时在url后加上 ?characterEncoding = utf-8 即可
比如:
jdbc:mysql://localhost:3306/test?characterEncoding=utf8
一看就知道是java的,不适用于sqlsrever,会报错显示
“/”应用程序中的服务器错误。不支持关键字: “characterencoding”。
但是我觉的思路是对的,可以理解为
存数据时,先用UTF-8格式将数据解码成字节码,再将解码后的字节码重新使用数据库的编码存放到数据库中
取数据时,先将数据按数据库编码格式解码成字节码,再将解码后的字节码按UTF-8格式编码数据读出来
sql server我了解的少,不知道怎么在连接时设置写入编码,并且问题已经解决了就没有去试。
如果以上三种方法还不对,可以看看你的区域语言是否为简体中文
或者干脆去微软文档找方法:
https://docs.microsoft.com/zh-cn/sql/relational-databases/collations/collation-and-unicode-support?view=sql-server-2017
这是sqlserver2017排序规则和 Unicode 支持,选择你需要的内容查看