博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据库CRUD中的中文编码问题
阅读量:7009 次
发布时间:2019-06-28

本文共 1655 字,大约阅读时间需要 5 分钟。

hot3.png

几天前的拼命coding碰到了很多问题,其中一个就是中国特色程序猿问题——中文编码乱码。

当我把写好的DAO模块测试CURD时,数据库执行正常,但是所有的字段中的中文全部乱码。我尝试了修改eclipse项目默认编码为UTF-8,尝试设置数据库的表的编码

alter table type character set utf8;

都无济于事。

自己曾经遇到过这种情况,但是没有整理过,到了用的时候,眉头一皱,计就是不上来。

折腾了半个钟头,终于找到了解决办法:

这里就忘了刚才的囧吧,咳咳,加入我们刚刚开始建立数据库表:

我们应该这么做:

CREATE TABLE jingdian(id INT PRIMARY KEY AUTO_INCREMENT,  businessId INT, businessName VARCHAR(200), city VARCHAR(100), longitude DOUBLE, latitude DOUBLE, hashCode VARCHAR(200) ) default charset = utf8;

就是在创建表的末尾加入默认字符集的定义:但是为什么之前修改表字符集操作时没能成功,让人有点费解。我猜测的原因是之前数据库的编码默认为别的类型,当我存入utf-8编码的数据时它被认为是MYSQL的默认编码数据而被错误解码,出现乱码,而我修改表的字符编码时,这时候MYSQL又将这些本来就乱了的字符按照某种编码转换方法以MYSQL原默认编码向UTF-8转换,错上加错。具体原因还有待考察,这里只是我的推测。

然后数据库的访问url也需要指定参数,这是我平时没注意的方式,不需要牵涉具体的数据库交互组件的使用。具有相当的通用性,这里推荐给大家:

driver=com.mysql.jdbc.Driverurl=jdbc:mysql://localhost:3306/database?useUnicode=true&characterEncoding=utf8 username=rootpassword=

我查看了其他人的博客,似乎还有其他的解决办法,这里我找了几条比较清楚的:

1.  SET NAMES 'utf8'; 

它相当于下面的三句指令: 

SET character_set_client = utf8; SET character_set_results = utf8; SET character_set_connection = utf8;

2. 创建数据库 

mysql> create database name character set utf8;

3. 创建表

CREATE TABLE `type` ( `id` int(10) unsigned NOT NULL auto_increment, `flag_deleted` enum('Y','N') character set utf8 NOT NULL default 'N', `flag_type` int(5) NOT NULL default '0', `type_name` varchar(50) character set utf8 NOT NULL default '', PRIMARY KEY (`id`) )  DEFAULT CHARSET=utf8;

4. 修改数据库成utf8的.

mysql> alter database name character set utf8;

5. 修改表默认用utf8.

mysql> alter table type character set utf8;

6. 修改字段用utf8

mysql> alter table type modify type_name varchar(50) CHARACTER SET utf8;

转载于:https://my.oschina.net/happyBKs/blog/491615

你可能感兴趣的文章
SICP 习题 (1.10)解题总结
查看>>
Windows 下OpenSSL 安装
查看>>
SpringBoot整合Kotlin构建Web服务
查看>>
基于Mixin Network的PHP比特币开发教程 之一:创建机器人
查看>>
区块链是一个公共数据库,要放在一个块内
查看>>
vuex实现及简略解析
查看>>
Docker 使用 supervisord 管理 lumen队列与crontab
查看>>
vue-router源码解析(二)插件实现
查看>>
危险 AI 花名册
查看>>
日常工作-处理Windows下PHPStudy中的Apache无法启动的解决方法
查看>>
Windows Server已可安装Docker,Azure开始支持Mesosphere
查看>>
React从入门到精通系列之(15)不可控组件
查看>>
与Susan Fowler探讨生产就绪微服务之问答
查看>>
JCP EC投票反对Java平台模块系统
查看>>
Liftbridge为NATS提供了类Kafka的日志API
查看>>
Realm为Node.js发布对象数据库
查看>>
[译] 如何运用新技术提升网页速度和性能
查看>>
全域赋能和智慧全球,阿里巴巴大数据技术前瞻与案例
查看>>
90%炒币者亏钱,区块链“撒币时代”结束了
查看>>
冬天来了,让Sleep System智能床垫帮你暖床!
查看>>