SQL Server插入中文乱码

如果数据库的Collocation是英文的,字段是varchar类型,向表中插入中文数据,会出现乱码。

解决方法:

方法1. 修改varchar 为 nvarchar类型, 并在插入数据前加N,例如: insert into table_name(a) values (N‘中文‘)

方法2. 如果不修改字段类型,还是varchar, 则需要修改数据库的Collocation为 中文,参考

---------------------------------------------------------------------------------------------------------

还有一种,在建表时,指定某个字段的语言,

方法 COLLATE Chinese_PRC_CS_AS_WS

示例:

create table test
(
a varchar(255) COLLATE Chinese_PRC_CS_AS_WS NULL, 
b varchar(255) COLLATE sql_latin1_general_cp1_ci_as NULL 
)

测试:

insert test values(‘中文‘,‘中文‘)

插入后 字段 a 为 中文 ,b 为 ??

---------------------------------------------------------------------------------------------------------

若是使用存储过程插入数据的话,需要将对应的参数类型改为nvarchar。

示例:
create PROCEDURE [dbo].[export_Create]

@C_HM nvarchar(128) 
AS 
INSERT INTO export 
([C_CCH]) 
values 
(@C_HM)

在表格中,C_CCH为varchar类型。

时间: 2024-12-14 22:59:58

SQL Server插入中文乱码的相关文章

SQL Server插入中文数据后出现乱码

原文:SQL Server插入中文数据后出现乱码 今天在做项目的过程中遇到如标题的问题,情况如下图: 数据库使用的是SQL Server2012版本,创建表的脚本如下: CREATE TABLE [dbo].[Type](  [TypeId] INT NOT NULL PRIMARY KEY,     [TypeName] NVARCHAR(50)NOT NULL,     [Description] NVARCHAR(255) NULL,     [CategoryId] INT NOT NU

Mysql DBA 高级运维学习笔记-Mysql插入中文乱码问题

1.1 mysql插入中文数据乱码 1.1.1MySQL中添加中文数据并查看检表语句 a.创建cuizhong测试数据库并查看建表语句 mysql> create database cuizhong; Query OK, 1 row affected (0.00 sec) mysql> show create database cuizhong\G *************************** 1. row *************************** Database:

客户端cmd打开mysql,执行插入中文报错或插入中文乱码解决方案

最近在制作一个安装包,需要安装的时候执行mysql脚本儿,做了一个批处理,但是发现总是执行到 插入中文的时候报错,或者插入中文是乱码. 网上查了好多资料,说是把编码改成GBK什么的,终究还是不成功. 最后经过多次测试,现把解决方案分享给大家. 第一步:打开mysql中的配置文件,my.ini,看一看配置文件中 [mysql] default-character-set=utf8 [mysqld] character-set-server=utf8 看是不是这样配置的.因为utf8 是国际通用的,

MyBatis连接MySQL插入中文乱码

问题:数据库已有中文读取时正常,插入中文却变成乱码 这就是编码设置的问题了,MySQL有两处指定了编码 1.连接MySQL的url设置 db.url=jdbc:mysql://127.0.0.1:3306/user-center?useUnicode=true&characterEncoding=utf8 2.建表时的编码指定 插入中文乱码说明是连接MySQL的url编码设置有问题,修改useUnicode=true&characterEncoding=utf8设置即可

PL/SQL Developer显示中文乱码

PL/SQL Developer显示中文乱码,可能是oracle客户端和服务器端的编码方式不一样. 解决方法: Select userenv('language') from dual; 设置环境变量 NLS_LANG, 值为AMERICAN_AMERICA.AL32UTF8.然后重启电脑就OK了. 原文地址:https://www.cnblogs.com/linlf03/p/9376938.html

Linux环境下MySQL数据库用SQL语句插入中文显示 “问号或者乱码 ” 问题解决!

问题: 在普通用户权限下执行 mysql -u root -p进入mysql数据库,中间步骤省略,插入数据:insert into 库名(属性)values('汉字'); 会出现如下提示:  Query OK, 1 row affected, 1 warning (0.00 sec)    表明出现错误,没有插入成功,然后执行select * from 表名   就会出现如下的问题:显示的表中出现乱码或者问号. 如图: 解决方案: 首先重新打开一个终端窗口(方便操作),进入root用户模式 执行

mybatis连接mysql数据库插入中文乱码

对于mysql数据库的乱码问题,有两中情况: 1. mysql数据库编码问题(建库时设定). 2. 连接mysql数据库的url编码设置问题. 对于第一个问题,目前个人发现只能通过重新建库解决,建库的时候,选择UTF-8字符集.我试过修改现有数据库字符集为UFT -8,但是根本不起作用,插入的中文仍然乱码(中文显示成:???).重建库时选择字符集为UTF-8之后,中文正常显示了. 对于第二个问题,是这样 的情况:我建库时设置了数据库默认字符集为UTF-8,通过mysql workbench直接插

ubuntu下解决mysql插入中文乱码(???)的问题

一.原因     myeclipse中插入中文发现不仅在mysql中且在myeclipse中查询都显示???  ?二.解决 ?     网上看了很多资料,如果在mysql中直接修改,重启mysql后就失效,一般修改my.ini文件,当然在ubuntu下是my.cnf.修改的过程可参考http://blog.knowsky.com/190431.htm     但在我进行修改的过程中发现:         找到[mysqld]在下面加入        default-character-set=u

关于SQL server 插入数据时语言和特殊字符的处理

问题描述: 当插入或者是修改数据时,当插入(修改)的字段中存在(韩文,日文)或者其他字符时,出现插入的字符变成了乱码或者是成堆的问号. 解决方法: 在 Microsoft SQL Server 中, 以下数据类型支持 Unicode 数据: nchar, nvarchar, ntext 使用SQL语句操作的时候应该注意以下问题: 原查询语句 Select * From TABLENAME Where field1 like '%xxx%' 使用 Unicode 数据类型的, 应该为: Selec