900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > 数据库如何修改编码格式?

数据库如何修改编码格式?

时间:2023-01-06 09:16:44

相关推荐

数据库如何修改编码格式?

最近经常在群里碰到问数据库编码格式怎么修改的同学,这类的问题是老生常谈的问题,也是在编程过程中经常让人避之不及的问题。之前也被编码格式问题搞过很多次,为了防止遇到同样问题的人踩坑,故写下这篇文章。

声明:数据库版本: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=".URLDecoder" %><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "/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()是要进行解码的内容,根据自己的情况进行修改。

我的代码:

//创建存放用户名密码的mapMap<String,String> loginMap = new HashMap<String,String>();//获取cookiesCookie[] 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"); %>

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。