黑马day09 数据库乱码分析

乱码分析:

首先在cmd窗口下,一个cmd窗口就是一个客户端,默认是使用gbk编码的,但是这个编码是不可以更改的。

当输入汉字"张"的时候客户端使用gbk进行编码:假设 张:1110

服务器使用什么解码的?我们使用show variables like "character%";打印结果如下:

解释:

-----+

| Variable_name            | Value

|

+--------------------------+------

-----+

| character_set_client     | utf8 服务器认为客户机是使用utf-8进行编码的

|

| character_set_connection | utf8 服务器认为客户机和服务器的连接是utf-8编码

|

| character_set_database   | utf8

|

| character_set_filesystem | binar

|

| character_set_results    | utf8 服务器认为打印到命令行窗口使用的是utf-8编码

|

| character_set_server     | utf8

|

| character_set_system     | utf8

虽然服务器是这么认为的但是服务器认为的是错的,因此我需要让服务器知道客户机的编码是gbk

使用set names gbk;

然后查看show variables like "character%";

这样子服务器就会使用gbk进行解码,然后服务器的编码是character_set_database   |
utf8

gbk----------------->utf-8会乱码么?

其实底层是这样的,当服务器使用gbk解码后,即String s=new String (1110,gbk),然后编码 s.getBytes(utf-8)存放到数据库中的。

当我们取数据的时候呢是这个过程的逆向过程,转化为gbk的编码发送,因此客户机不会看到乱码。

原理图:

时间: 2024-10-01 02:34:30

黑马day09 数据库乱码分析的相关文章

PostgreSQL数据库内核分析 笔记(这本书没有怎么很好的看,主要就是一些数据结构、概念和流程的文字介绍)

PostgreSQL数据库内核分析 跳转至: 导航. 搜索 目录 1系统概述 2体系结构 3存储管理 4索引 5查询编译 6查询执行 7事务处理与并发控制 8数据库安全 9附录A 用Eclipse开发和调试 系统概述 初始化数据库:./initdb --no-locale -D ../data ./pg_ctl start -D ../data 数据库命令:initdb createuser dropuser createdb dropdb pg_dump pg_restore pg_ctl v

页面传入数据库乱码

关于页面传入数据库乱码的问题,主要是需要把页面的编码.程序的编码和数据库的编码都设为utf-8就可以很大程度上避免出现乱码了. 数据库设置如下(MySQL) Eclipse设置如下 还有jsp页面也要改(没有改之前Eclipse的默认编码格式是ISO-8859-1) <%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%

02 - Unit08:搜索笔记功能、搜索分页、处理插入数据库乱码问题

搜索笔记功能 按键监听事件 $("#search_note").keydown(function(event){ var code=event.keyCode; if(code==13){ 请求发送 } }) select * from cnshare cnshare_title like '%' 发送Ajax请求 事件绑定:键盘监听事件(keydown) 获取参数:keyword,作为模糊查询的基础 发送请求:/share/find.do 服务器处理 ShareController.

mysql 数据库乱码问题

mysql 数据库乱码问题,按如下顺序检查,一步一步排除出错位置. 最好全部编码都使用UTF8编码. 网页页面编码方式使用UTF8: <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 然后检查连接MYSQL数据库时设为UTF8: mysql_query("set character set 'UTF8'",$con);mysql_query(&q

jsp 传值jsp 数据库 乱码解决的攻略 全套

jsp传值给jsp中文乱码 传值给数据库乱码的解决方法 所有的用到编码的所有统一utf-8 1.装mysql的时候有选择编码的界面的那个地方选utf-8编码 2 建数据库的时候选择 字符集 排序规则所有utf8 -- UTF-8 Unicode  utf8_general_ci 3 建立表的时候 字符集 排序规则所有和上面一样 到这里数据库那边的好了 接下来是jsp端 4 全部jsp页面的头部加入 <%@ page language="java" import="jav

http和数据库sql分析与窃听技术

用tunnel,tunnel是一种技术称谓,将其放到真正的服务器和客户端之间.调试阶段可以使用webcream运行tomcat作为模拟的真正的服务器. 具体:用apache axis及其项目中的工具tcpmon. 但tunnel有个缺点,就是要重新配置客户端和服务器让他们发送请求道tunnel代理. 另: 在RMI协议上的监听:RMI指的是Remote method invocation,即远程过程调用,它是使用java 的JRMP(java remote method protocol)或II

让MySoft.Data也能有Discuz!NT的数据库查询分析工具

当我们用Debug模式运行Discuz!NT项目的时候,我们会发现在页面的最下方有一个数据查询分析工具,非常的方便.当我们运行一个页面的时候,对sql的操作可以一目了然.当然,有些还是无法显示在页面上的,比如多个跳转的时候,最终显示的就只有一个页面的sql.不过也挺方便了. 如图: 这个数据库查询分析工具,只有在Debug模式下才会显示,Release模式不会显示. 这样的做法有两个好处,一是方便调试,第二是每当发布站点的时候,一定是Release模式的,可以确保站点在运行效率上有保证(很多时候

MySql数据库乱码解决方法

MySql数据库乱码解决方法 解决乱码问题一个原则:存取系统使用一致的编码规则. 多使用mysql的原生命令行,这样才能做更多的事情. ? 第一步: 确认应用系统需要使用的编码 java的默认编码是跟随系统的,有的说是默认UNICode,在java中可以使用 String defaultCharsetName=Charset.defaultCharset().displayName();显示编码. 第二步: 确认并设置MySql的数据库的编码 1. 显示编码,简单的方法命令是:status; 或

社交网数据库技术分析(转)

Normal 0 false false false EN-US ZH-CN X-NONE MicrosoftInternetExplorer4 原文:http://blog.csdn.net/ding_yiming/article/details/5603067 社交网 现在,传统的互联网正在迈向一个一个全新的时代 ---- 社交服务网时代( Social Networking Service ),从“人与机器”的时代迈向“人与人”的时代.互联网社交服务网站的发展验证了“六度分隔理论”( Si