1.乱码 --- 编码集
   编码集的本质是让数字与字符产生一个映射关系,不同的编码集映射实现也不同
   比如UTF-8: "中"----> -28  -72  -83 对应三个字节
       GBK:   "中"----> -42  -48      对应两个字节
2.乱码 --- 编码集(特殊情况)
   a.编码集之间支持的字符不同时,会产生乱码,比如UTF-8支持中文,使用不支持中文
     的ISO-8859-1解析,会出现乱码
   b.编码集支持的字符相同的情况时,转换字符使用的编码集是会出现乱码
3.常见的乱码场景
     a.IO流操作,进行流读取时,数据源是GBK编码集,而程序是UTF-8编码集,导致乱码
     b.IO流操作,进行流写出时,程序是UTF-8的,默认文件默认是GBK的,但是竟然没有乱码
 
   总结:字符串在不同程序之间进行传输时,有两种传输依据:
         i.以字节为依据
            A中存储字符"中"(GBK编码集 -42 -48),传输给B,直接传输字节-42 -48
         ii.以字符为依据
             A中存储字符"中"(UTF-8编码集 -28 -72 -83),传输给B(不管默认编码集),直接按照UTF-8编码集存储文字
      c.数据库操作:
           eclipse使用编码集GBK,传输中文字符"中",到MySQL,而MySQL使用编码集(UTF-8),MySQL存储未出现乱码,
           因为MySQL会先使用GBK编码集将字节转换成字符,然后再使用UTF-8转化成字节之后再用UTF-8转换成字符存储起来
4、JavaWEB 中乱码问题
   响应:
    response.setCharacterEncoding("UTF-8");//告诉Tomcat 使用 UTF-8
    response.setContentType("text/html;charset=utf-8");//告诉浏览器和 Tomcat 使用 UTF-8 编码集
   请求:
    request.setCharacterEncoding("UTF-8");//只适用于 POST
    GET 和 POST 通用
    byte[] buffer = value.getBytes("ISO-8859-1");//"中"在 UTF-8 中字节一样
        value = new String(buffer,"UTF-8");//中
   地址栏:地址栏有专属的编码方式
         java.net.URLDecoder;
         java.net.URLEncoder;
         URLEncoder.encode(s,enc)进行编码
         URLDecoder.decode(s, enc)进行解码
         链接提交到服务器用到GET方法,因此可以使用GET处理乱码的方式进行解码

Java变成遇到的简单乱码问题的更多相关文章

  1. Java web中常见编码乱码问题(一)

    最近在看Java web中中文编码问题,特此记录下. 本文将会介绍常见编码方式和Java web中遇到中文乱码问题的常见解决方法: 一.常见编码方式: 1.ASCII 码 众所周知,这是最简单的编码. ...

  2. Java web中常见编码乱码问题(二)

    根据上篇记录Java web中常见编码乱码问题(一), 接着记录乱码案例: 案例分析:   2.输出流写入内容或者输入流读取内容时乱码(内容中有中文) 原因分析: a. 如果是按字节写入或读取时乱码, ...

  3. 计算机网络(13)-----java nio手动实现简单的http服务器

    java nio手动实现简单的http服务器  需求分析 最近在学习HTTP协议,还是希望动手去做一做,所以就自己实现了一个http服务器,主要功能是将http请求封装httpRequest,通过解析 ...

  4. 模拟java.util.Collection一些简单的用法

    /* 需求:模拟java.util.Collection一些简单的用法! 注意:java虚拟机中并没有泛型类型的对象.泛型是通过编译器执行一个被称为类型擦除的前段转换来实现的. 1)用泛型的原生类型替 ...

  5. Rsession让Java调用R更简单

    Rsession让Java调用R更简单 R的极客理想系列文章,涵盖了R的思想,使用,工具,创新等的一系列要点,以我个人的学习和体验去诠释R的强大. R语言作为统计学一门语言,一直在小众领域闪耀着光芒. ...

  6. Java IO读写中文各种乱码问题 【转】

    Java IO读写中文各种乱码问题 转自:http://blog.sina.com.cn/s/blog_484ab56f0101muzh.html java.io.*读写中文各种乱码,很费劲.不完全解 ...

  7. java与C#的简单比较

    刚刚看完java视频,做了个简单图: 新知识不多,大多是与以往知识的相互碰撞,一下做了java与C#的简单比较:                         Java C# 主类名与文件名 必须一 ...

  8. 多线程(三) java中线程的简单使用

    java中,启动线程通常是通过Thread或其子类通过调用start()方法启动. 常见使用线程有两种:实现Runnable接口和继承Thread.而继承Thread亦或使用TimerTask其底层依 ...

  9. Java数据结构和算法 - 简单排序

    Q: 冒泡排序? A: 1) 比较相邻的元素.如果第一个比第二个大,就交换它们两个; 2) 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对.在这一点,最后的元素应该会是最大的数; 3) 针 ...

随机推荐

  1. scrapy学习

    安装依赖 基础运用 在item中定义一个类(scrapy.Item)来保存 类似于django yield返回两种东西,一种是在items中定义好的类 一种是新的请求 css选择器选取的标签 如果要保 ...

  2. springboo+nginx测试反向代理02

    本节对nginx配置方面会略微研究~~ 1:切换到 /opt/nginx-1.8.1/conf 目录,将nginx.conf文件拷贝到 /myprojects/nginx 目录下 2:切换到/opt/ ...

  3. SQL08 清空日志文件语句

    --1.先查询数据的日志文件的名称 USE lwlz_zhiluo GO SELECT name FROM SYS.database_files WHERE type_desc='LOG' --2.执 ...

  4. MapReduce流量统计

    准备数据access.log 要用到的只有第二个手机号,倒数第三上行流量,倒数第二下行流量. 1363157985066 13726230503 00-FD-07-A4-72-B8:CMCC 120. ...

  5. JIRA API 对接

    系统要跟JIRA对接,将本系统数据发送给jira. 开始一头雾水怎么让数据传过去已什么形式存在,是存数据库呢还是怎么显示呢.研究半天发现其实只要将原数据作为json数据提供给jira接口,jira接口 ...

  6. ​Django-model

    Model:数据库操作 创建数据库的表: django不能自动创建数据库,但能创建表 在web的models里定义生成表 在project的settings里设置app定义和数据库信息 步骤: 1.创 ...

  7. Continuity of arithmetic operations

    Arithmetic operations taught in elementary schools are continuous in the high level topological poin ...

  8. python全栈开发day115、116-websocket、websocket原理、websocket加解密、简单问答机器人实现

    1.websocket 1.websocket 与轮询 轮询: 不断向服务器发起询问,服务器还不断的回复 浪费带宽,浪费前后端资源 保证数据的实时性 长轮询: 1.客户端向服务器发起消息,服务端轮询, ...

  9. AspNet Core 下利用普罗米修斯+Grafana构建Metrics和服务器性能的监控 (无心打造文字不喜勿喷谢谢!)

    概述 Prometheus的主要特点 组件 结构图 适用场景 不适用场景 安装node_exporter,系统性能指数收集(收集系统性能情况) 下载文件 解压并复制node_exporter应用程序到 ...

  10. 使用Fiddler完成Android和IOS手机抓包Https

    实现原理 Fiddler是PC端有名的HTTP抓包工具,利用它我们可以轻松实现对主机上所有http/https网络请求的捕捉.查看和修改操作. 同时它也提供了代理模式,其它主机由它代理发送的网络请求也 ...