博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java-编码解密
阅读量:4291 次
发布时间:2019-05-27

本文共 1096 字,大约阅读时间需要 3 分钟。

  • ASCII
    ASCII是American Standard code for Information Interchange,美国信息交换标准代码。
    7位来表示一个字符,共计可以表示128种字符,对于英文这种语言时可以胜任的。随时计算机广泛的使用,ASCII无法完全表示所有的字符,随之ISO-8859-1字符集就应运而生

  • ISO-8859-1
    8位表示一个字符,即一个字节(byte)(8 bit)来表示一个字符,共可以表示256个字符。ISO-8859-1完全兼容ASCII编码集。然后随后发展过程中,类似中文这种语言的广泛性,ISO-8859-1是无法满足

  • gb2312
    国标字符集,对所有的汉字重新进行编码,每一个汉字都有一个对应的表示,2个字节表示一个汉字,基本上可以胜任中文

  • gbk
    对gb2312的一种扩展,例如生僻字等的表示,完全兼容gb2312

  • gb18030
    基于上述的另一个延生,基本上能够对中文简体有很好的支持

  • big5
    繁体中文的一种编码方式。

  • unicode
    由此对于所有国家都需要有对应的编码集,显然是不合理的。因此统一产生了unicode这种编码方式,采用两个字节来表示一个字符。能够有256x256种。采用了unicode之后,存储的容量会大大增加。对于西方英文是大材小用,因此这种编码方式并不适合存储。

  • utf
    unicode Translation Format
    unicode是一个编码方式,而utf是一种存储方式。utf-8/utf-16等是Unicode的实现方式之一。
    对于utf-16来说有两种方式,utf-16le(little endian),utf-16be(big endian),对于一些系统的文件,开头会有一个隐藏不可见的字符来表示这两种形式,称为Zero Width No-Break Space,如果后面跟着0xFEFF(BE,FF大于FE1),反之如果是0XFFFE(LE)。utf-16也是两个字节来表示一个字符,也存在浪费。
    utf-8变长字节表示形式。对于不同的字符有不同的字节来表示,例如中文是通过3个字节来表示。针对utf-8会有一个BOM(Byte Order Mark),这个头是windows系统兼容性问题产生的,在windows下将utf-8的文件转化成16进制可以看到上述Zero Width No-Break Space标识。

对于一个文件,进行一种其他编码格式的解码(前提是支持这种字符表示),然后用这种编码格式编码然后写回原原件格式是可以做到不乱码的,尽管中间的过程是乱码的,但是结果可以表现出正常。

转载地址:http://cqrgi.baihongyu.com/

你可能感兴趣的文章
高并发环境下,先操作数据库还是先操作缓存?
查看>>
MySQL Explain详解
查看>>
一直搞不清楚什么是读写分离,主从复制的原理,今天总算搞懂了
查看>>
消息队列 mq 必会面试题
查看>>
线程池的工作原理是啥?能手写一个线程池吗?
查看>>
Java程序内存的简单分析
查看>>
Javascript单例模式概念与实例
查看>>
SQL NULL 函数
查看>>
多例设计模式
查看>>
WebView的JavaScript与本地代码三种交互方式
查看>>
WebView的JavaScript与本地代码三种交互方式
查看>>
Android Studio里面配置Tesseract
查看>>
深入浅出JavaScript之this
查看>>
Android include标签的使用注意事项
查看>>
final成员变量和final局部变量
查看>>
Android数据加密之异或加密算法
查看>>
greenDao好的示例网址
查看>>
Android自定义控件--仿安全卫士中的一键加速
查看>>
Android Tools Attributes,让布局设计所见即所得
查看>>
Android内存泄露的原因
查看>>