编码问题的产生其实都是I/O操作导致的问题,也就是说所有I/O存在的地方就有可能会出现编码问题。 所以要想深度解析编码问题,我们就必须回到源码的实现机制,找到I/O操作中可能导致乱码的操作(行为)。我们知道I/O有四大家族InputStream,OutputStream,Writer,Reader前两个是基于字节的操作,后两个是基于字符的操作。由于我们平时是使用字符的方式进行记录信息,但由于计算机只认识0和1,所以I/O作为人机交互的手段,它的底层一定是以字节的方式进行传送的,编码问题其实就是发生在字符和字节之间相互转换的时候。