Java变成遇到的简单乱码问题
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变成遇到的简单乱码问题的更多相关文章
- Java web中常见编码乱码问题(一)
最近在看Java web中中文编码问题,特此记录下. 本文将会介绍常见编码方式和Java web中遇到中文乱码问题的常见解决方法: 一.常见编码方式: 1.ASCII 码 众所周知,这是最简单的编码. ...
- Java web中常见编码乱码问题(二)
根据上篇记录Java web中常见编码乱码问题(一), 接着记录乱码案例: 案例分析: 2.输出流写入内容或者输入流读取内容时乱码(内容中有中文) 原因分析: a. 如果是按字节写入或读取时乱码, ...
- 计算机网络(13)-----java nio手动实现简单的http服务器
java nio手动实现简单的http服务器 需求分析 最近在学习HTTP协议,还是希望动手去做一做,所以就自己实现了一个http服务器,主要功能是将http请求封装httpRequest,通过解析 ...
- 模拟java.util.Collection一些简单的用法
/* 需求:模拟java.util.Collection一些简单的用法! 注意:java虚拟机中并没有泛型类型的对象.泛型是通过编译器执行一个被称为类型擦除的前段转换来实现的. 1)用泛型的原生类型替 ...
- Rsession让Java调用R更简单
Rsession让Java调用R更简单 R的极客理想系列文章,涵盖了R的思想,使用,工具,创新等的一系列要点,以我个人的学习和体验去诠释R的强大. R语言作为统计学一门语言,一直在小众领域闪耀着光芒. ...
- Java IO读写中文各种乱码问题 【转】
Java IO读写中文各种乱码问题 转自:http://blog.sina.com.cn/s/blog_484ab56f0101muzh.html java.io.*读写中文各种乱码,很费劲.不完全解 ...
- java与C#的简单比较
刚刚看完java视频,做了个简单图: 新知识不多,大多是与以往知识的相互碰撞,一下做了java与C#的简单比较: Java C# 主类名与文件名 必须一 ...
- 多线程(三) java中线程的简单使用
java中,启动线程通常是通过Thread或其子类通过调用start()方法启动. 常见使用线程有两种:实现Runnable接口和继承Thread.而继承Thread亦或使用TimerTask其底层依 ...
- Java数据结构和算法 - 简单排序
Q: 冒泡排序? A: 1) 比较相邻的元素.如果第一个比第二个大,就交换它们两个; 2) 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对.在这一点,最后的元素应该会是最大的数; 3) 针 ...
随机推荐
- 第十三节,OPenCV学习(二)图像的简单几何变换
图像的简单几何变换 几何变换不改变图像的像素值,只是在图像平面上进行像素的重新安排 适当的几何变换可以最大程度地消除由于成像角度.透视关系乃至镜头自身原因所造成的几何失真所产生的的负面影响. 一.图像 ...
- Python 自然语言处理(1)中文分词技术
中文分词技术 中文自动分词可主要归纳为“规则分词”“统计分词”和“混合分词”,规则分词主要是通过人工设立词库,按照一定方式进行匹配切分,实现简单高效,但对新词很难进行处理,统计分词能够较好应对新词发现 ...
- 秋名山老司机(BS4与正则的比拼)
因为嘉伟思杯里的一个脚本题目,16进制计算,python3正则还没学,所以没写出来.大佬跟我说也可以用BS4,从DOM上下手,直接爬下来直接一个eval就搞定了,eval可以像这样计算16进制,eva ...
- encode与decode
import torch from torch import nn import numpy as np import matplotlib.pyplot as plt import torch.ut ...
- python爬虫之xpath的基本使用
一.简介 Xpath是一门在XML文档中查找信息的语言.Xpath可用来在XML文档中对元素和属性进行遍历.Xpath是W3C XSLT标准的主要元素,并且XQuery和XPointer都构建于XPa ...
- Selective Kernel Network
senet: https://arxiv.org/abs/1709.01507 sknet: http://arxiv.org/abs/1903.06586 TL, DR Selective Kern ...
- Nginx动态路由的新姿势:使用Go取代lua
导语: 在Nitro 中, 我们需要一款专业的负载均衡器. 经过一番研究之后,Mihai Todor和我使用Go构建了基于Nginx.Redis 协议的路由器解决方案,其中nginx负责所有繁重工作, ...
- 29 内置方法 eval | exec 元类 单例
eval与exec内置方法 将字符串作为执行目标,得到响应结果 eval常用作类型转换:该函数执行完有返回值 exec拥有执行更复杂的字符串:可以形成名称空间 eval内置函数的使用场景: 1.执 ...
- 如何实现python连续输入
题型:输入矩阵,求对角线之和 思路(模型): i=0 while i<3: x=input() i+=1 print(x) 可以实现输入三行,最后输出最后一个x x=int(input()) m ...
- BaiduMap路程计算
#BaiduMap路程计算def getDistance(deslat,deslng,originlat,originlng): url='http://api.map.baidu.com/direc ...