SQL查询解决中文乱码的问题
- 格式:docx
- 大小:15.67 KB
- 文档页数:1
Sql Server 2005 中文乱码解决使用SQLSERVER2005的时候常常遇到中文字符为乱码的情况,经过研究发现,设置SQL的排序规则可以解决这个问题。
1、登录服务器打开Micr osoft SQL Server Manage m entStudio。
2、在要修改的数据库上单击鼠标右键,并选择“属性”。
3、在弹出的数据库属性窗口中点击“选择页”中的“选项”。
4、将排序规则由默认的SQ L_Lat in1_G enera l_CP1_CI_A S修改为C hines e_PRC_CI_A S。
5、点击确定就O K。
varcha r修改为n varch archar修改为ncha r注:如果无法修改的话,请尝试关闭所有与此数据库的连接,实在不行的话请重启动S QL SERVER 服务。
两种方法:1:安装时不要选 Hide advice config urati on option s然后再 Collat ion design atorand order中选择 Chines e_PRC就可以了。
2:在建表时指明某个字段的语言方法 COLLAT E Chines e_PRC_CS_A S_WS示例:create tabletest(a varcha r(255) COLLAT E Chines e_PRC_CS_A S_WSNULL,b varcha r(255) COLLAT E sql_la tin1_gener al_cp1_ci_as NULL)insert test values('中文','中文')插入后字段a 为中文,b 为??sql server中文乱码30我用的是sq l server2008英文版的系统也是英文的我在里面插入数据的时候只要是中文就显示的是乱码我是直接在表里面添加数据的各位大侠帮帮忙啊满意答案浙中IT认证 11级 2010-08-26系统语言里加中文,要不然中文一定是乱码。
OralcePlsql中⽂显⽰乱码问题⽆需修改注册表完美解决此⽅法在其它版系统也可以解决win10-64plsqloracle 11g绿⾊版客户端错误现象:因为oracle⽤的是绿⾊版,⽆法设置注册表,尝试以下⽅法。
解决⽅法:1、在plsql中查询oracle服务端默认语⾔select*from v$nls_parameters t where t.PARAMETER ='NLS_LANGUAGE'or t.PARAMETER ='NLS_CHARACTERSET';-----------------------------------------------------------select*from nls_session_parameters;-----------------------------------------------------------select*from nls_database_parameters;这⾥的NLS_LANGUAGE=AMERICAN不会影响中⽂显⽰-------------------------------------------------------------常⽤语⾔字符查询SQLselect*from v$nls_parameters t where t.PARAMETER ='NLS_LANGUAGE'or t.PARAMETER ='NLS_CHARACTERSET';select*from nls_session_parameters;select*from nls_database_parameters;select*from nls_instance_parameters;2、在PLSQL Developer⽬录下新建⼀bat⽂件,内容如下:@echo offset path=D:\oracle\product\instantclient_11_2set ORACLE_HOME=D:\oracle\product\instantclient_11_2set TNS_ADMIN=D:\oracle\product\instantclient_11_2set NLS_LANG=AMERICAN_AMERICA.ZHS16GBKstart plsqldev.exe运⾏bat⽂件时,打开plsql再次查询数据时正常。
.sql导⼊中⽂显⽰乱码解决⽅法
我是⽤的最后⼀种⽅法,前⾯三种解决MYSQL导⼊数据乱码的⽅法没试过,东莞SEO推荐⼤家直接使⽤第四种⽅法处理MYSQL导⼊中⽂数据时的乱码问题。
⾸先在新建数据库时⼀定要注意⽣成原数据库相同的编码形式,如果已经⽣成可以⽤phpmyadmin等⼯具再整理⼀次,防⽌数据库编码和表的编码不统⼀造成乱码。
⽅法⼀: 通过增加参数 –default-character-set = utf8 解决乱码问题
mysql -u root -p password < path_to_import_file –default-character-set = utf8
⽅法⼆: 在命令⾏导⼊乱码解决
1. use database_name;
2. set names utf8; (或其他需要的编码)
3. source example.sql (sql⽂件存放路径)
⽅法三: 直接粘贴sql⽂件⾥的代码
1. 打开SQLyog客户端软件;
2. 定位到SQL编辑器,然后⽤记事本打开刚刚导出的SQL⽂件;
3. 复制⽂件中所有SQL语句到SQL编辑器当中,执⾏这些SQL代码;
⽅法四: ⽤记事本或其他⽂本⼯具改变SQL⽂件的编码格式(若⽅法三不⾏,那就尝试⽅法四)
1. ⽤记事本(或UE)打开刚才的导出的SQL⽂件;
2. 另存此⽂件——打开另存为对话框,选择对话框中的编码格式为UNICODE编码;
3. 保存⽂件,然后CTRL+A,全选;
4. 复制⾥⾯的SQL语句到SQLyog中的“SQL编码器”当中,再执⾏⼀次SQL语句;
5. 执⾏完成后切记刷新⼀次,查看中⽂的数据表,乱码消除,⼤功告成;。
sqlserver乱码显⽰问题【1】问题直接查询表,表中的字段是乱码,不管⽤UTF8、还是⽤ GBK,这些就是不显⽰,什么垃圾特殊字符写着⾥⾯发现其这个 customerid 在sql server客户端显⽰是⼀串空⽩,但是在程序段显⽰是乱码在ssms中,我们是可以这么关联的,你看我贴出来都有错误,但在ssms中,是⼀串空⽩select*,cast(customerid as varbinary) from PTCustomer WITH(NOLOCK) WHERE customerid=' 'select*from customer with(nolock) where customerid =' '直接关联:也是可以的select*from customer with(nolock) where customerid =(select customerid from PTCustomer WITH(NOLOCK) WHERE ptid ='nbbf5110006')【2】解决:特殊字符转成⼆进制后⼲脆已⼆进制的⽅法提取出来;然后⽤⼆进制做匹配select*,cast(customerid as varbinary) from PTCustomer WITH(NOLOCK) WHERE ptid ='nbbf5110006'select*from customer with(nolock) where cast(CUSTOMERID as char)=cast(0xA7F3A6FB as char)有⼈要问了,为什么不直接⽤⼆进制匹配,还要特地转成字符串?where cast(CUSTOMERID as char)=cast(0xA7F3A6FB as char)因为我发现他们两个转完之后,不⼀样啊!如下图,所以才转成字符串的。
cmd命令行sql数据库中文乱码这个问题很多人开始都会不知道,当然包括曾经的我,当用到的时候,只好求助于伟大的股沟和度娘了。
网上有设置的方法,但说明确不够详细系统,说设置字体为:Lucida Console。
问题是,在默认方式下,只有点阵字体,哪有什么Lucida Console。
所以,在自己成功设置后,拿出来和大家分享下过程,下面就让我们找出Lucida Console来设置吧。
这里需要先了解些内容:CHCPCHCP是MD DOS中的命令,用来显示或设置活动代码页编号的。
用法是:CHCP [nnn]其中nnn指定的是代码页的编号。
这个参数是可选的,在命令行下如果不指定这个代码页编号,那么默认是显示当前的代码页编号。
比如,在默认的cmd窗口中,我们输入chcp 显示的将类似:活动的代码页: 936这里的936表示当前使用的是简体中文(GB2312)编码。
UTF8你也需要了解编码的一些知识,为了完成支持UTF8的工作,你至少需要知道UTF8代码页的编号:65001。
更多关于编码的内容,这里不赘述,请自行查找相关内容。
有这两个知识点,接下来,让cmd支持UTF8就变得容易了。
1. 运行CMD;2. 输入 CHCP (没有分号)回车查看当前的编码;3. 输入CHCP 65001 回车;4. 仅如此,还是不能支持UTF8的正常显示,你还要在窗体上右键,选择属性,来设置字体;5. 操作完上面几步后,即使你原来的字体里面没有显示Lucida Console这个字体,现在应该也能看到了。
选择它。
如果原来就有,可以选上它先试试,不行在执行上述步骤(这里补充:至少我本机需要CHCP 65001下,有朋友说不要);6. 选择只应用到本窗体,确认。
这时候,你的Console里面,应该支持UTF8了。
有些朋友也想知道如何在CMD显示更多的字体,这个其实也是有办法的,只要在注册表(路径:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Console\TrueTypeFont)中添加就好了。
如何解决asp读sql数据时出现乱码的问题
response后,发现sql语句里面的中文字段都成了乱码,可以用下面的方法解决:
<%@ codepage=936%>简体中文
<%@ codepage=950%>繁体中文
<%@ codepage=65001%>UTF-8
codepage指定了IIS按什么编码读取传递过来的串串(表单提交,地址栏传递等)。
出乱码的原因也就是网站要整合的时候模块编码不一样引起的。
最方便的方法如下:
不要转换任何模块网页的编码该utf-8的还是utf-8,该Gb22312的还是Gb2312。
在Utf-8模块的包文件(如conn.asp,但是要注意conn.asp必须是在第一行调用)最前面加上:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<%Session.CodePage=65001%>
在GB2312模块的包文件最前面加上:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<%Session.CodePage=936%>。
数据库中乱码问题解决方案1. 介绍在数据库中,乱码问题是一个常见的挑战。
当数据被存储、处理或显示时出现乱码,会给用户带来困扰,并可能导致数据不正确地被处理或显示。
本文将探讨数据库中乱码问题的原因,提供解决方案以避免或解决这些问题。
2. 乱码问题的原因乱码问题可能出现在数据库的各个环节,例如数据存储、传输、处理和显示等。
以下是一些常见的乱码问题的原因:2.1 字符集不匹配数据库使用不同的字符集来存储和处理数据。
如果数据的字符集与数据库或应用程序的字符集不匹配,就会导致数据乱码问题。
2.2 编码转换错误在数据传输或处理过程中,可能会进行字符编码的转换。
如果转换过程中存在错误,就会导致数据乱码问题。
2.3 特殊字符处理不当一些字符具有特殊的含义或用途,如果在处理这些字符时不加以考虑,就会导致数据乱码问题。
例如,特殊字符在SQL查询中使用时可能引起问题。
3. 解决方案为了解决数据库中的乱码问题,我们可以采取以下一些措施:3.1 使用统一的字符集确保数据库、应用程序和客户端使用相同的字符集,并将所有数据存储在统一的字符集中。
这样可以避免字符集不匹配导致的乱码问题。
3.2 确保正确的编码转换在进行字符编码转换时,需要确保使用正确的转换算法和目标字符集。
可以使用一些常见的编码库或工具来进行转换,例如Iconv。
3.3 转义特殊字符在处理包含特殊字符的数据时,需要进行适当的转义处理。
例如,在执行SQL查询时,可以使用参数化查询或转义字符来避免特殊字符引起的问题。
3.4 设置正确的字符集和校对规则在创建数据库和表时,需要明确指定正确的字符集和校对规则。
这样可以确保数据被正确地存储和处理,从而避免乱码问题的出现。
4. 示例下面是一些示例代码,演示如何使用解决方案来避免数据库中的乱码问题:4.1 创建数据库和表时设置字符集CREATE DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;USE mydb;CREATE TABLE mytable (id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(100)) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;4.2 在应用程序中确认所有数据使用正确的字符集String url = "jdbc:mysql://localhost/mydb?useUnicode=true&characterEncoding=ut f8";String user = "myuser";String password = "mypassword";Connection conn = DriverManager.getConnection(url, user, password);4.3 执行参数化查询以避免SQL注入问题String sql = "SELECT * FROM mytable WHERE name = ?";PreparedStatement stmt = conn.prepareStatement(sql);stmt.setString(1, "John"; // 参数化查询ResultSet rs = stmt.executeQuery();5. 总结在数据库中,乱码问题是一个常见的挑战。
SqlServer数据库中⽂乱码问题解决
1.右键数据库》属性
2.点击“选项”》修改排序⽅式
解决⽅法2:
最彻底的就是重装SQL,在安装时⾃定义安装,选好语⾔版本及排序规则,这样问题就解决了。
参数解释如下:
前半部份:指UNICODE字符集,Chinese_PRC_指针对⼤陆简体字UNICODE的排序规则。
排序规则的后半部份即后缀含义:
_BIN ⼆进制排序
_CI(CS) 是否区分⼤⼩写,CI不区分,CS区分
_AI(AS) 是否区分重⾳,AI不区分,AS区分
_KI(KS) 是否区分假名类型,KI不区分,KS区分
_WI(WS) 是否区分宽度WI不区分,WS区分
区分⼤⼩写:如果想让⽐较将⼤写字母和⼩写字母视为不等,请选择该选项。
区分重⾳:如果想让重⾳和⾮重⾳字母视为不等,请选择该选项。
如果选择该选项,
⽐较还将重⾳不同的字母视为不等。
区分假名:如果想让⽐较将⽚假名和平假名⽇语⾳节视为不等,请选择该选项。
区分宽度:如果想让⽐较将半⾓字符和全⾓字符视为不等,请选择该选项。
首先得知道入库的问题还是页面编码的问题。
最好直接打开数据表,在里边输入中文,若是问号,就是数据库的问题,这时的解决方法有两种。
第一种办法:先选中出错的数据库→选中以后右键点击属性会弹出数据库属性对话框→选中数据库属性对话框中的选项→把选项中的排序规则设置成:Chinese_PRC_90_CI_AS→最后点击确定即可。
第二种办法:首先打开你的sql查询分析器(新建查询),然后输入以下代码执行即可:ALTER DATABASE 数据库名COLLATE Chinese_PRC_90_CI_AS例如:ALTER DATABASE 9NPC COLLATE Chinese_PRC_CI_AIALTER DATABASE AutoUpgrade COLLATE Chinese_PRC_CI_AI(以上操作都可在SQL Server Management Studio Express中完成,操作时要保证数据库没有使用)若在数据表中输入的中文能正常显示,就是入库的问题,这事就要改传入页面的编码问题,一般有“GBK,gb2312和utf-8”我的改成最后一种变正常。
更改排序规则。
alter database 数据库collate 排序规格其中,某些排序规则指定ci 不区分大小写,cs 指定区分大小写。
如:alter database 数据库collate chinese_prc_ci_as不区分大小写,而alter database 数据库collate chinese_prc_cs_as使之区分大小写。
使用如下命令,可以获得更多的规则:select *from ::fn_helpcollations()在sql server2000中如何改变整个sql的排序规则名称重建master 数据库关闭microsoft® sql server™ 2000,然后运行rebuildm.exe。
SQL Server 2008 中文出现乱码,我把排序哪里改成Chinese_PRC_CI_AS 也不行,并且重新打开数据库排序有变
SQL Server 2005 中文出现乱码,我把排序哪里改成Chinese_PRC_CI_AS 也不行,并且重新打开数据库排序还是变回SQL_Latin1_General_CP1_CI_AS
请高手指教下。
和数据库毫无关系。
可能发生此类问题的原因有大概以下几种:
1 写入数据库的时候使用的是英文版操作系统,默认编码为utf-8编码。
送进数据库的字符串自然也是按utf-8编码的。
读取时使用的是中文操作系统,默认编码是gb2312 读出来的东西于是乱码了。
2 写入数据库的时候指定了字符串的编码方式读取的时候指定的编码方式和写入时不一样。
3 该字符串是从文本文件或者网络等其他媒介读取出来然后再写入数据库的。
该文本文件的编码方式和默认的编码方式不同
读出语句改为,把字段的类型改为nvarchar,insert或select的时候,条件还有插入的字段
中文'
都加上N,例如select N'。