最近经常在群里碰到问数据库编码格式怎么修改的同学,这类的问题是老生常谈的问题,也是在编程过程中经常让人避之不及的问题。之前也被编码格式问题搞过很多次,为了防止遇到同样问题的人踩坑,故写下这篇文章。
声明:数据库版本:MySQL5.6 开发软件eclipse 语言:Java
首先要说的是在MySQL中修改编码,如下:

  • 将具体表的编码格式转换为utf8:

     **alter table <表名> CONVERT TO CHARACTER SET utf8;**
    
  • 查看数据库编码格式:

          **show variables like 'character_set_database';**
    
  • 查看数据表的编码格式:

      **show create table <表名>;**
    
  • 创建数据库时指定数据库的字符集:

     **create database <数据库名> character set utf8;**
    
  • 创建数据表时指定数据表的编码格式:

create table tb_books (name varchar(45) not null,price double,bookCount int,author varchar(45)) default charset = utf8;
  • 修改数据库的编码格式:

     **alter database <数据库名> character set utf8;**
    
  • 修改字段编码格式:

      **alter table <表名> change <字段名> <字段名> <类型> character set utf8;****alter table user change username username varchar(20) character set utf8 not null;**
    
  • 在JDBC链接数据库时转换编码格式:

      **"jdbc:mysql://localhost:3306/db_test?useUnicode=true&characterEncoding=UTF-8";**
    
  • 在接收页面传入的值时转换编码格式:

<%@ page language="java" contentType="text/html; charset=utf-8"pageEncoding="utf-8"%><%@  page  import="java.net.URLDecoder"  %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
</head>
<body>
<% String name=URLDecoder.decode(new String(request.getParameter("name").getBytes("ISO-8859-1"),"UTF-8"),"UTF-8");
request.setAttribute("names", name);%>
......(略)
  • 还有个比较奇葩的,在cookie中保存了中文,当选择记住账号密码时,之前的中文竟然乱码了。
  • 这种情况,是因为它不怎么支持中文,解决如下:
    1.编码
    将中文进行编码再放入cookie中:
String username1 = URLEncoder.encode(username, "utf-8");
String userpwd1 = URLEncoder.encode(userpwd, "utf-8");

其中username和userpwd其中有中文,username1和userpwd1是进行编码之后的字符串。
比如:(我这里做的是三天免登陆)

Cookie loginCookie = new Cookie("loginCookie",username1+":"+userpwd1);//将编码后的内容放到Cookie中loginCookie.setMaxAge(24*3600);//设置loginCookie的有效期3天 24小时*60分钟*60秒resp.addCookie(loginCookie);//将loginCookie响应到浏览器

2.解码:(如果不进行解码,页面会获取的是base64编码后的内容)

 String unamePwd = URLDecoder.decode(cookies[i].getValue(),"utf-8");

其中cookies[i].getValue()是要进行解码的内容,根据自己的情况进行修改。
我的代码:

//创建存放用户名密码的map
Map<String,String> loginMap = new HashMap<String,String>();//获取cookies
Cookie[] cookies = req.getCookies();
//进行判断
if(cookies!=null) {for(int i=0;i<cookies.length;i++) {if(cookies[i].getName().equals("loginCookie")) {String unamePwd = URLDecoder.decode(cookies[i].getValue(),"utf-8");String[] up = unamePwd.split(":");loginMap.put(up[0], up[1]);req.getSession().setAttribute("loginMap",loginMap);}}
}

这样cookie就不会乱码了。
更新:
在文本框中输入中文,后台通过JSP获取到内容后返回到页面出现乱码:
在JSP页面中的<body>下面写上这段:

<%  request.setCharacterEncoding("utf-8"); %>

数据库如何修改编码格式?相关推荐

  1. 批量修改编码格式小工具

    批量修改编码格式小工具 工具地址https://github.com/amrali-eg/EncodingChecker

  2. MySql数据库安装修改密码开启远程连接图解

    相关工具下载地址: mysql5.6 + SQLyog-12.0.8 链接: https://pan.baidu.com/s/1kVuZIvl 密码: dwyr 教程开始: 数据库安装: 1.MySQ ...

  3. 【MySQL】查看 mysql 数据库最后修改时间、创建时间、表大小

    查看 mysql 数据库最后修改时间.创建时间.表大小 一个库有几十张表,有很多这样的库. 想要查询一个库最近一次修改的时间,用以判断哪个是最近在使用的库. 有什么办法可以查询一个库最近一次修改的时间 ...

  4. java实现数据库内容修改_数据库更改到Java环境中实现可持续和平

    java实现数据库内容修改 对我们而言,可持续和平正在消除不确定性. 在这种情况下,由于数据库更改,欢迎使用Ruby的Active Record Migrations . 迁移对我们意味着什么? 嗯, ...

  5. linux CentOS7最小化安装环境静默安装Oracle11GR2数据库(修改配置文件_06)

    接上一篇:linux CentOS7最小化安装环境静默安装Oracle11GR2数据库(上传安装包并解压_05) linux CentOS7最小化安装环境静默安装Oracle11GR2数据库(修改配置 ...

  6. oracle 11g 数据库cmd修改用户名密码及创建用户

    oracle 11g 数据库cmd修改用户名密码及创建用户 1. 数据库oracle 11g cmd命令修改用户名和密码 1.1. 前言 1.2. cmd窗口登录oracle 1.3. 更改syste ...

  7. oracle 表字段顺序_Oracle数据库如何修改表中字段顺序

    Oracle数据库如何修改表中字段顺序 发布时间:2020-07-09 15:53:15 来源:亿速云 阅读:166 本篇文章给大家分享的是有关Oracle数据库如何修改表中字段顺序,小编觉得挺实用的 ...

  8. linux CentOS7最小化安装环境静默安装Oracle11GR2数据库(修改配置文件)

    linux CentOS7最小化安装环境静默安装Oracle11GR2数据库(修改配置文件) 一.修改内核文件: vim /etc/sysctl.conf 按一次 "i"进入编辑模 ...

  9. 修改mysql数据库默认字符集_MySQL数据库之修改mysql默认字符集的两种方法详细解析...

    本文主要向大家介绍了MySQL数据库之修改mysql默认字符集的两种方法详细解析 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. (1) 最简单的修改方法,就是修改mysql的m ...

最新文章

  1. 如何用Python实现超级玛丽的界面和状态机?
  2. [转载]关于Android ProGuard混淆学习记录
  3. Git commit -m与-am
  4. 阿里开源分布式事务解决方案 Fescar
  5. 关于javascript的原型和原型链,看我就够了(二)
  6. mysql 高并发 卡死,高并发中的卡死状态 -HashMap
  7. 微星msi B450M+i5-8500+1060成功黑苹果
  8. 树莓派蜂鸣器python代码_[原创]初玩树莓派B 5控制蜂鸣器演奏乐曲
  9. oracle错误代码03113,Oracle ora-03113错误的处理
  10. 台式计算机硬盘主要接口,硬盘接口类型,详细教您怎么看硬盘接口的类型
  11. ROS_Noetic使用handeye-calib进行机械臂手眼标定
  12. Flurry analytics SDK集成步骤及功能简介
  13. windows配置代理
  14. 区块链相关数据报表_区块链行业数据统计
  15. 八十二烷基笼状聚倍半硅氧烷poss无色透明黏稠液体|提高颜料分散性
  16. 记一次线上报错{“exception“:“Illegal pattern component: XXX}
  17. Promise的基本用法以及作用
  18. 【k8s】Unable to restart cluster, will reset it: apiserver healthz异常
  19. 源码分析:SpringBoot健康检查
  20. STM32、51单片机如何使用USB转TTL烧写程序?

热门文章

  1. pikachu-XSS(跨站脚本攻击)
  2. 单行文本省略号和多行文本省略号
  3. Linuxserver沦陷为肉鸡的全过程实录
  4. Esky+Cx_freeze开发打包python可自动升级程序
  5. eclipse默认指向WebContent目录修改为webRoot 设置说明
  6. 谷雨主题的微信公众号图文排版有哪些技巧?
  7. 微信小程序中使用Base64编码解码
  8. redis客户端工具下载,RedisDesktopManager,RedisInsight
  9. Dad34 Java对象的内存形式
  10. mysql统计枚举值