SqlServer数据库中文乱码问题解决方法_MsSql

来源:脚本之家  责任编辑:小易  

连接数据库的编码设置网页的编码设置php处理页面添加一个headr(),设置编码数据库的编码设

问题:创建新数据库,存入中文显示乱码???

请确认你插入的中文的编码和数据库所用的编码一致。

原因分析:SQL版的乱码问题还是出现在SQL SERVER的安装设置上。默认安装时系统默认的排序规则是拉丁文的排序规则,但一般人在安装时没有考虑到这一点,安装时只是点取下一步,安装完成后,造成了SQL版在使用过程中出现乱码。

这个问题,我可以说已经是老油条了乱码原因只要你使用的是php自带的那个mssql,那读出

解决方法1:

楼上的是什么数据库,在论坛里搜下 数据库name 和乱码,有很多方法共你尝试(乱码的原因不尽相同)

如果是新建数据库,可以在建立数据时指定排序规则,记得选中文简体(Chinese_PRC_CS_AI_WS);如果数据库中已经有数据,则转换 编码会失败

插入的数据要使用统一编码格式, 比如 set column_name =N'balab

操作步骤

推荐这几本这方面的好书,值得反复阅读:认识商业对于商业模式,第一本书一定是这一本。这本书是美国很多企业管理课程的必选教材,从不同的方面,包括商业环境、求职创业、企业管理、人力资源、营销、财务、融资多方面多层次等来讲述商业运作的相关知识。把商业企业的原理与运作规则说的非常清晰易懂,书中包括了不少的案例。做到了从常识开始传授知识的方式。特别适合学生刚离开始学习接触职场,以及刚开始创业的人去阅读。商业模式新生代书中用一张图表,将商业模式的本质分成9个构块说清楚了。把企业如何创造价值,传递价值和获取价值的基本原理让人很容易理解。商业模式九个基本构造块:CS客户细分VP价值主张CH渠道通路CR客户关系R

1.右键数据库》属性

使用食材制作主料:带皮肥瘦肉400克制作辅料:蒸肉粉4分之1匙生抽少许姜少许鸡精一小匙做法原料猪肉洗干净,切成片,不要太薄也不要太厚加蒸肉粉、姜丝、生抽,用筷子拌均匀,让肉粘满蒸肉粉,并腌制1个小时蒸锅加水烧开,放上粉蒸肉蒸30--40分钟,就可以出锅了特色看完这些,是不是觉得很简单?以前家里做的就没这么简单了,奶奶做的蒸肉粉都是自己拿糯米炒香,再用石头锤舂成碎粉,自己再加些调料:草果,八角,茴香,食盐等,而现在想吃了,也没那么麻烦,直接去买包蒸肉粉就可以回来做。但也少了那种别样的心情。小贴士其实做粉蒸肉最好就是选五花肉,不过昆明的五花肉肥肉太多了,根本看不到瘦肉,那样的肉,猪头是不肯吃的,只

2.点击“选项”》修改排序方式

一如果是在游戏里打架的话那肯定MC赢咯,MC就是不用MOD不用指令不开创造,仗着人多也能把迷你狗们打到喊爹吧,适合打架的MOD我看非无尽贪婪莫属,无尽套穿满后不会再受到任何伤害,剑的伤害是∞,也就是说什么玩意都可以一刀放倒,而且都是无尽耐久的。无尽贪婪犯规?那再向迷你狗们亮拔刀剑吧,攻击快富有多样性,还能把你削的飞起来。还有一大杀器,就是命令方块!命令方块可以用tp把迷你狗全体位移虚空,kill指令一波全放倒。还有很多指令,把迷你狗耍的团团转。在这里我必须艾特一下守望屁股一键命令方块的作者,他把死神和卢西奥这两个还原出来了。迷你有坐骑?那是你忘了MC的龙骑士MOD!载着你飞天,空中吊打,而且驯

解决方法2:

天然条件形成的,蓝莓狭义是指一群越橘属(Vaccinium)越橘亚属青液果组(学名:Cyanococcus)的开花植物,广义上可以包括越橘属中长有蓝色浆果的所有物种。蓝莓这些种的植物原生于北美洲与东亚,为灌木,高度可从10厘米到4米;矮小种称为“矮丛蓝莓”(lowbushblueberries),而高大种称为“高丛蓝莓”(highbushblueberries)。叶可为落叶性或长青性,叶形卵圆形到披针形(英语:lanceolate),长1到8厘米,宽0.5到3.5厘米。花朵为钟形,颜色从白色、桃色到红色都有,有时带有淡淡的绿色调。果实在植物学上是假果,直径5到16公厘,带有喇叭形的冠在末端;一

最彻底的就是重装SQL,在安装时自定义安装,选好语言版本及排序规则,这样问题就解决了。

参数解释如下:

前半部份:指UNICODE字符集,Chinese_PRC_指针对大陆简体字UNICODE的排序规则。

排序规则的后半部份即后缀 含义:

  _BIN 二进制排序

  _CI(CS) 是否区分大小写,CI不区分,CS区分

  _AI(AS) 是否区分重音,AI不区分,AS区分   

  _KI(KS) 是否区分假名类型,KI不区分,KS区分 

_WI(WS) 是否区分宽度WI不区分,WS区分 

区分大小写:如果想让比较将大写字母和小写字母视为不等,请选择该选项。

区分重音:如果想让重音和非重音字母视为不等,请选择该选项。如果选择该选项,

比较还将重音不同的字母视为不等。

区分假名:如果想让比较将片假名和平假名日语音节视为不等,请选择该选项。

区分宽度:如果想让比较将半角字符和全角字符视为不等,请选择该选项

sqlserver 建库指定utf-8 修改库为utf-8编码

CREATE DATABASE paas COLLATE Chinese_PRC_CI_AS

GO

ALTER DATABASE paas COLLATE Chinese_PRC_CI_AS

GO

让ASP和MS SQL SERVER支持UTF-8编码存储多国语言文字

近日在ASP+MS SQL存储UTF-8编码内容的时候,出现乱码的情况,经过查询发现要使SQL SERVER支持UTF-8编码格式,必须做一些修改才可以。

1、确保ASP页面是UTF-8编码的,并在ASP页面顶部声明中使用<%@ LANGUAGE = VBScript CodePage = 65001%>进行编码声明

2、输出的HTML页面中声明字符集:<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

3、在进行URL参数传递的时候,要使用Server.URLEncode()方法进行编码

4、使用JS进行URL参数传递中文的时候,要使用escape进行编码

5、在将UTF-8编码的内容存入SQL SERVER数据库中的时候,要存储的字段必须设置为NVARCHAR类型,SQL语句要在内容前加N表示,如insert into user (name) values (N´&username&´),除id意外的字段都需要加N。

更多看看这里:http://msdn.microsoft.com/en-us/library/ms186939.aspx

字符数据类型是固定长度,nchar,或可变长度,nvarchar,unicode数据,并使用Unicode UCS-2字符集.

也在这里:http://en.wikipara.org/wiki/utf-16

较早的ucs-2(2字节通用字符集)是类似的字符编码,1996年7月在Unicode标准的2.0版中被utf-16所取代。

扩展阅读,根据您访问的内容系统为您准备了以下内容,希望对您有帮助。

python3连接MSSQL数据库 中文乱码怎么解决

以前用php连mssqy时也经常出现中文乱码(中文变问号)的问题,那时就明白是编码没设置好导航,现在的Python连mssql数据库也同样出现这问题,问题一样,解决的办法当然也会相似,现在我们来看看解决方法。

python一直对中文支持的不好,最近老遇到编码问题,而且几乎没有通用的方案来解决这个问题,但是对常见的方法都试过之后,发现还是可以解决的,下面总结了常用的支持中文的编码问题(这些方法中可能其中一个就能解决问题,也可能是多个组合)。

(1)、首先,要保证文件的开头要加上编码设置来说明文件的编码

代码如下

复制代码

#encoding=utf-8

(2)、然后,在连接数据的连接参数里加上字符集说明查询出的结果的编码,这个不加的后果可能是查询出的汉字字符都是问号

代码如下

复制代码

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

(3)、设置python系统的默认编码(对于文件来说,这招几乎屡试不爽,呵呵~~)

代码如下

复制代码

import sys

reload(sys)

sys.setdefaultencoding('utf8')

注意:上述编码是“utf8”,而不是“utf-8”,我也没弄明白,大部分情况下,这个无所谓的,但是这里我试了必须要是“utf8”

一个简单的完整的python连接mssqlserver的例子如下(得安装pymssql包):

代码如下

复制代码

#encoding:utf8

import sys

reload(sys)

sys.setdefaultencoding('utf8')

import pymssql

try:

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

sql="select * from UserInfo"

cur=conn.cursor()

cur.execute(sql)

data=cur.fetchall()

conn.close()

print data

except Exception,e:

print e

运行结果如下:

代码如下

复制代码

[(u'20093501', u'xb9xf9xbexb8', u'u7537 ', 35, u'xb4xf3xcfxc0'),

(u'20093502', u'xbbxc6xc8xd8', u'u5973 ', 34, u'xc3xc0xc5xae'),

(u'20093503', u'xc1xeexbaxfcxb3xe5', u'u7537 ', 25, u'2Bxc7xe0xc4xea'),

(u'20093504', u'xc8xcexd3xafxd3xaf', u'u5973 ', 24, u'xc6xafxc1xc1')]

[Finished in 0.2s]

虽然摆脱了问号和乱码的困扰,但这仍不是我们想要的结果,但这个确实是正确的,因为结果是utf8编码。这个现象确实诡异,请教了许多高手,得知,最好的结果就是逐个字段查询,才能显示中文,整个查询的话,会以utf8的格式显示出来。

上述代码中第14行data是整个查询的结果,如果指定某个具体的字段,如print data[0][2](表示取查询结果的第一行第三列的字段的值),则会输出中文。

其实不仅仅是mssqlserver数据库,mysql(需下载MySQLdb包)、sqllite(python自带的文件数据库)、mongodb(需下载PyMongo包)等或者是普通文本文件也是类似的解决方案。

如何解决MSSQL中文数据乱码问题

b.用查询分析器进行数据管理,在中文数据前加N,强制转换编码,如:insert into test(name,address) values(N'技术',N'易网库')2.改数据库的排列规则(collation)a.执行下面sql语句改collation:alter database 数据库名称 collate Chinese_PRC_CI_ASb.把所有字符字段都改成无符号类型,如:nchar,ntext,nvarchar注意: 1.对已经乱码的数据,没有效果2.这只针对MSSQL控制台中文乱码的问题,若是网站乱码,得进一步检查文件存储编码和显示编码的设置。3.执行下面的sql语句,可以查看当前数据库的排列规则:

mssql数据库中的数据乱码

在SQL Server Unicode字符串常量需要前缀N

当在SQL SERVER里边处理字符串常量的时候你必须在常量之前放一个大写的N,就像SQL SERVER连机文档标题为"采用Unicode数据"所说明的那样.N前缀象征着在SQL-92 标准的国家语言,并且必须是大写字母.如果你在Unicode字符串常量前边不放一个N的话,SQL Server 在用它只前会把它转化成当前数据库的非Unicode代码页.

这个符号必须用来提供和现存的程序的向后兼容.举例, "SELECT 'Hello'" 一定要返回一个非Unicode 字符串因为许多的程序依赖于SQL Server 6.5,而它是不支持Unicode数据.而新的语法"SELECT N'Hello'" 被添加从而语序从SQL Server 7.0和去SQL Server 7.0.传递Unicode 字符串.

任何时候当你向SQL Server 传递Unicode 数据的时候你必须在它的前边放上N.如果你的程序支持Unicode而且向SQL Server 7.0 传递了未加N的字符串常量,你可能会遇到字符串数据的损失.当 SQL Server 把一个未加N的Unicode字符串转化成SQL Server数据库的代码页,Unicode字符串里边的任何字符,并且在SQL Server代码页里边不存在的字符将会损失.

如果你的程序没有发送向SQL Server 发送SQL Server 数据而且客户端的ANSI代码页符合SQL Server 代码页,就没有必要加上N,并且你也不会遇到数据的损失.但是, SQL Server 7.0 允许你在安装的时候挑选一种不同于排序次序的Unicode校勘.在某些情况下这可能会导致涉及到有N前缀的字符串和没有N前缀的字符串出现不同的结果.举例,当你安装SQL Server 7.0的时候,你选择了二进制排序规则(排序规则在比较非Unicode 字符串是用),而且选择了常规Unicode作为Unicode校勘(校勘在比较Unicode字符串时用).比较两个非Unicode字符串表达式 ("ABC" = "abc") 会返回失败因为在二进制排序规则里边大写字母A和小写字母a是不相等的.相反的,表达式(N'ABC' = N'abc') 会返回正确.因为加上前缀的字符串它们会被转化成Unicode而且Unicode校勘会被用来比较它们.和二进制比较不同的是,常规Unicode校勘是大小写不敏感的并且会视两个字符串相同的.

注意如果其中的一个字符串加上前缀N而另外一个没有的话,非Unicode串会被转化成Unicode串并且Unicode校勘会被应用来比较她们.

变量赋值再输出中文是可以的。但是从MSSQLSERVER数据库中输出时,就成了乱码。这是为什么?

怀疑是pymssql.connect指定的字符集跟数据库使用的字符集不符,尝试修改charset。

也可以参考《pymssql中文显示乱码》里面类似的方法来处理

unicode变量.encode('latin1').decode('gbk')

  • 本文相关:
  • sqlserver eventdata()函数来获取ddl 触发器信息
  • sql自动增长标识导致导入数据问题的解决方法
  • mssql简单查询出数据表中所有重复数据的方法
  • sql server 2000安装教程图文详解
  • truncate 快速删除表中的所有数据
  • sql 平均数统计
  • sqlserver 数据库 三大 范式
  • sql server 2008 正式版安装指南 包含序列号
  • 浅谈sql server交叉联接 内部联接
  • system表空间不足的报警问题浅析
  • python3连接MSSQL数据库 中文乱码怎么解决
  • 如何解决MSSQL中文数据乱码问题
  • mssql数据库中的数据乱码
  • 变量赋值再输出中文是可以的。但是从MSSQLSERVER数据库中输出时,就成了乱码。这是为什么?
  • 高分求助MSSQL乱码问题!
  • PHP连接MSSQL2008数据库,读取时出现乱码,怎么解决?
  • 为何使用executemany()向mssql数据库中插入中文数据会显示乱码,该如何解决?
  • php 连接 mssql 乱码
  • godaddy的mssql数据库乱码问题!参考方法如何操作呢?
  • MSSQL数据库能正确的显示越南文,可是ERP系统里面的内容部分乱码,请各位侠帮忙看看,感谢!
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全mssqlmysqlmariadboracledb2mssql2008mssql2005sqlitepostgresqlmongodbredisaccess数据库文摘数据库其它首页mssqlsqlserver eventdata()函数来获取ddl 触发器信息sql自动增长标识导致导入数据问题的解决方法mssql简单查询出数据表中所有重复数据的方法sql server 2000安装教程图文详解truncate 快速删除表中的所有数据sql 平均数统计sqlserver 数据库 三大 范式sql server 2008 正式版安装指南 包含序列号浅谈sql server交叉联接 内部联接system表空间不足的报警问题浅析sql server 2012 安装图解教程(附sql server数据库入门学习总结microsoft sql server 2012 数据sql重复记录查询的几种方法win7系统安装sqlserver2000的详细sqlserver中distinct的用法(不重sql server错误代码大全及解释(sql-order by 多字段排序(升序、sql将一个表中的数据插入到另一个用sql语句添加删除修改字段、一些如何统计全天各个时间段产品销量情况(sqsqlserver实现oracle的sequence方法sqlserver数据库获取数据库信息sql server 创建临时表的使用说明sql server中减小log文件尺寸的方法分享删除数据库中重复数据的几个方法存储过程优缺点分析sql 存储过程批量删除数据的语句通过系统数据库获取用户所有数据库中的视sqlserver not in 语句使程充崩溃
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved