使用SQL database Migration wizard迁移数据库时的varchar中文乱码问题
来源:互联网 发布:淘宝如何报名天天特价 编辑:程序博客网 时间:2024/05/01 18:23
最近遇到一个问题,是有一个SQL数据库的表用varchar存中文数据。在使用SQL Migration wizard迁移到Azure后,所有的中文都变成????了。但如果源表是nvarchar类型,则没有问题。
经过分析后,发现该问题的出现跟OS的文本编码有关。
首先,采用varchar存放中文数据并不推荐。SQL server存放varchar数据时,对英文采用1个字节存储,对其他语言采用2个字节存储。而且,存储其他语言(如中文)时,其编码方式是随意的。用户可以输入任何编码方式的字符进入该字段。而SQL server只是在数据库一级通过collation这个属性来标识数据库的语言信息。本例的collation是Chinese_RPC_CI_AS
如果用户写入数据时采用的编码和读出时采用的编码不同,就会导致乱码。因此,建议的方式是采用nvarchar来存储中文数据。nvarchar和varchar的区别是,其编码方式固定采用unicode. 这样就避免了编码不一致的问题
但是,如果已有数据库已经采用了varchar,又不想转换为nvarchar,该怎么办呢?我们在使用SQL database migration wizard时需要注意几个地方:
1. 运行SQL database migration wizard的机器最好安装了中文包,而且必须配置非Unicode编码方式为中文。要注意,Azure上VM的缺省编码方式是英语,所以一定要修改
这样,当SQL database migration wizard把数据从源数据库导出时,就知道该采用哪种编码写入数据文件。
2. 目标SQL Azure数据库在创建时,必须采用跟源数据库一样的collation
这样就可以解决中文字符乱码的问题了
- 使用SQL database Migration wizard迁移数据库时的varchar中文乱码问题
- Sql Server Varchar类型中文乱码问题的解决办法
- 数据库迁移/数据库版本管理(Database Migration/VCS for database)
- sqlserver数据库版本之间的转换之Microsoft SQL Server Database Publishing Wizard 使用
- ORACLE数据库迁移中文乱码问题
- Laravel数据库迁移(Database Migration)操作实例
- Microsoft SQL Server Database Publishing Wizard 使用
- 关于SQL的char,varchar字段在导出时切断中文字符显示问号或乱码的问题[原创]
- migration数据库迁移
- SQL Server2005的好工具——数据库发布向导(Database Publishing Wizard)
- SQL Server2005的好工具——数据库发布向导(Database Publishing Wizard)
- 关于mysql varchar字段 存储中文出现乱码的问题
- 迁移Mysql数据库到Azure上的SQL database
- Orcale 数据库客户端PL/SQL 中文乱码的问题
- Orcale 数据库客户端PL/SQL 中文乱码的问题
- 数据库迁移工具DataX-Migration
- VC++6.0用New DataBase Wizard创建数据库时出现无法连接的问题解决备忘
- ESF Database Migration Toolkit Pro 强大的数据库转换工具
- ebtables手册
- oracle指定排序方法
- ADROID 2.1 架构解析 8 触摸屏
- HDU 1593 find a way to escape
- Java中Vector和ArrayList的区别
- 使用SQL database Migration wizard迁移数据库时的varchar中文乱码问题
- 简单动态规划集(四)
- NET Framework Client Profile
- 从零开始--系统深入学习android(实践-让我们开始写代码-Android框架学习-2. 输入控件)
- ADROID 2.1 架构解析 9 SD/USB
- ebtables简介
- linux下C\C++ 开发小笔记
- socket 通信技术介绍
- ADROID 2.1 架构解析 10 声音