文件编码 ANSI、GBK、GB2312、MS936、MS932、SJIS、Windows-31 、EUC-JP 、EBCDIC 等等之间的区别与联系_sun0322的博客-CSDN博客_sjis编码格式

目录

■前言

■分步说明

■分步说明1

■分步说明2

■分步说明3

■分步说明4

■知识扩展

■UTF-8 编码原理

UTF-8用1到4个字节编码Unicode字符。

单字节

多字节

java代码解析

■更多编码 IOS-8859-1等


■前言

暂且不谈 UTF-8,Unicode (UTF-8只是Unicode字符集的一种编码实现方式)

Unicode字符集
国际化组织制定的,为各种语言的每一个字符制定了统一的并且是唯一的数学编号。

( 格式 :U+xxxx,格式里的 xxxx 代表四到六个十六进制的数。)

Unicode字符集有多种编码方式:Unicode,UTF-8,UTF-16,UTF-32,UnicodeLittle, UnicodeBig 等。
编码方式(Unicode):使用2个字节为每个字符编码。
编码方式(UTF-8)使用1到6个字节为每个字符编码。 128 个 ASCII 字符只需一个字节编码;如果UNICODE字符由2个字节表示,则编码成UTF-8很可能需要3个字节,而如果UNICODE字符由4个字节表示,则编码成UTF-8可能需要6个字节。

・UTF-8编码,一个汉字(包括中文形式下的符号)一般是3个字节,
一个英文(包括英文下的符号)1个字节,一个数字1个字节;・GBK和GB2312编码,一个汉字(包括中文形式下的符号)是2个字节,
一个英文(包括英文下的符号)1个字节,一个数字1个字节;・Unicode编码一个汉字(包括中文形式下的符号)和
一个英文(包括英文下的符号)一个数字都是2个字节;(Java 中的 char , 就是采用 Unicode 来存储字符的。)

win10 以 十六进制 形式(方式) 查看文件 内容_sun0322-CSDN博客  ← win10下,以十六进制形式查看文件

关于文件编码的描述,有很多种描述方式

中文:ANSI,GBK,GB2312, MS936

日文:ANSI, MS932,SJIS(SHIFT JIS),Windows-31J,EUC-JP,ISO-2022-JP

英文:ANSI, ASCII,MS437

还有IBM 大机 Mainframe : EBCDIC

(EBCDIC有好多种编码:1140,500,20290 )

■分步说明

■分步说明1

先理解什么是 ANSI

我们使用记事本保存文件时,都有这么一个选项。

不论你的系统时中文系统,或者日文系统。

ANSI 是 的缩写 (美国国家标准学会(American National Standards Institute: ANSI))

ANSI是一种字符代码,为使计算机支持更多语言,

通常使用 0x00~0x7f 范围的1 个字节来表示 1 个英文字符。

超出此范围的使用0x80~0xFFFF来编码

不同的国家和地区制定了不同的标准,由此产生了 GB2312、GBK、GB18030、Big5、Shift_JIS 等各自的编码标准。

也就是说,

 ・在中文系统中,使用ANSI保存,编码集是 GBK(MS936)

 ・在日文系统中,使用ANSI保存,编码集是 Shift_JIS(MS932)

即,对于不同语言来说,ANSI对应的编码是不同的   !!!

ANSI(一种字符代码)_百度百科 ← ANSI 百度百科

ANSI是什么编码? - malecrab - 博客园 ← 什么时ANSI编码 各个国家语言的ANSI编码

ANSI对应的是 cmd 命令行中 chcp 的编码code。

windows中,页面编码集一览 (chcp code)_sun0322-CSDN博客 ← 各个语言的,页面编码一览 chcp一览

这也是,为社么有的文件,我们使用chcp后,再次查看,就不再乱码的原因

■分步说明2

●GB2312与GBK的区别
・GB2312 :前面的一个字节(高字节)从0xA1用到 0xF7,后面一个字节(低字节)从0xA1到0xFE,这样就可以组合出大约7000多个简体汉字了
・GBK: 不再要求低字节一定是127号之后的内码,只要第一个字节是大于127就固定表示这是一个汉字的开始,
            GBK 包括了 GB2312 的所有内容,同时又增加了近20000个新的汉字(包括繁体字)和符号。

---  比如下面的【天】,GB2312 编码表中查得,可以看到编码表,低字节 从A1 开始

GBK编码表_sun0322-CSDN博客_gbk码表 ← GB2312 编码表

CC EC

---

编码格式简介(ANSI、GBK、GB2312、UTF-8、GB18030和 UNICODE)_ldanduo的专栏-CSDN博客_ansi gb2312区别 ← 此文章中,记述了GB2312 与 GBK 的区别

●MS932,SJIS(SHIFT JIS),Windows-31J 之间的关系

●windows-31J
Shift_JIS 的文字集合基本是按照JIS X 0208规定的。
但实际上各个厂商各自进行扩展,包含了大量重复的、规格以外的文字。
因此Windows在本来的 Shift_JIS的文字集合之外,又增加了NEC扩展、IBM扩展所包含的文字。
这种规格和实际情况的分歧长期存在,随着windows-31J的规格化,混乱情况有所改善。

https://www.iteye.com/blog/gohands-937775 ← Shift_JIS、EUC-JP、ISO-2022-JP这三种编码的区别

对于 Shift-JIS 编码的理解 (win10中 查看 Shift-JIS 编码 コード)_sun0322-CSDN博客_shift-jis  ← 个人对Shift_JIS 的理解

http://una.soragoto.net/topics/13.html ← 此文章中,记述了Shift-JIS的发展 (日文原文)

---

●SJIS(SHIFT JIS)  chcp 932

windows中,页面编码集一览 (chcp code)_sun0322-CSDN博客 ← 各个语言的,页面编码一览 chcp一览
・它被命名为答Shift_JIS的原因,是它在放置全角字符时,要避开原本在0xA1-0xDF放置的半角假名字符。
・在微软及IBM的日语电脑系统中,即使用了这个编码表。这个编码表称为CP932。

文字コード表 シフトJIS(Shift_JIS)  ← SJIS编码集

---

■分步说明3

●SJIS以外的日文编码

・EUC-JP是被Linux和Solaris广泛地使用的文字编码。 chcp 20932

windows中,页面编码集一览 (chcp code)_sun0322-CSDN博客  ← 各个语言的,页面编码一览 chcp一览
・ISO-2022-JP主要被Email使用的文字编码。 只使用7个bit,第8个bit不使用,所以不适合程序中的字符串处理,主要使用在网络中的数据交换中。

■分步说明4

EBCDIC

IBM 大机的编码语言 

   诞生于 1963 - 1964

早于 ASCII 编码,与ASCII是不同的编码,(英文数字对应的二进制是不相同的)

ASCII 诞生于 1967, 最后一次修正在1986年

EBCDIC、ASCII与EBCDIC的关系及相互转化_司马懿的西山居-CSDN博客_ebcdic码

chcp 500

chcp 20290

windows中,页面编码集一览 (chcp code)_sun0322-CSDN博客  ← 各个语言的,页面编码一览 chcp一览

■知识扩展

・Solaris 是Sun Microsystems研发的计算机操作系统。它被认为是UNIX操作系统的衍生版本之一

Solaris [soʊˈlɛrɪs]  当然,sun被oracle收购后,已经是oracle的东西了。

・6个Unix的变种 

linux与UNIX(solaris/aix/hp-ux)的比较-天鹰cool-ChinaUnix博客  ← linux与UNIX(solaris/aix/hp-ux)的比较

===

SGI Irix、
IBM AIX、
Compaq Tru64 Unix、
Hewlett-Packard HP-UX、
SCO UnixWare、
Sun Solaris

===

・linux不是Unix,Unix是商业软件,Linux是开源的

初次安装Linux(Ubuntu)(ssh,ftp服务安装)_sun0322-CSDN博客  ← Linux Unix之间的区别

■UTF-8 编码原理

UTF-8用1到4个字节编码Unicode字符。

单字节

对于单字节,字节第一位是0,后面7位为这个符号的unicode码。因此对于英语字母,
UTF-8编码和ASCII码是相同的。
例如:「h」的编码是1101000注意这里是7位,完整的应该是01101000

多字节

对于多字节,第一个字节:前n位都设为1,第n+1位设为0后面字节的前两位一律设为10。剩下的没有提及的二进制位,全部为这个符号的unicode码。例如:"你"的编码是

===

11100100 10111101 10100000

第一个字节前面有三个1,代表是由三个字节编码。后面两个字节的前两位为10

===

java代码解析

package com.sxz.test;public class CharUTF8 {public static void main(String[] args) {String fileEncoding = System.getProperty("file.encoding");System.out.println(fileEncoding); // UTF-8byte[] bytes = "你".getBytes();for (byte b : bytes) {System.out.println(b);System.out.println(Integer.toBinaryString(b & 0xFF));}System.out.println("=====");Character unicodeChar = '你';System.out.println(Integer.toBinaryString(unicodeChar));}}

===

UTF-8
-28
11100100
-67
10111101
-96
10100000
=====
100111101100000

===========================

UTF-8
-28
11100100
-67
10111101
-96
10100000
=====
100111101100000
===========================

更多编码 IOS-8859-1等

1.ASCLL码
ASCLL码共有128个,用一个字节(byte)的低七位表示,0到31是控制字符如换行、回车、删除等,32到126是打印字符,可以通过键盘输入并且能够显示出来。2.ISO-8859-1
128个字符显然是不够用的,于是ISO组织在ASCII码基础上又制定了一系列标准用来扩展ASCII编码,它们是ISO-8859-1~ISO-8859-15,其中ISO-8859-1涵盖了大多数西欧语言字符,所以应用得最广泛。ISO-8859-1仍然是单字节编码,它总共能表示256个字符。3.GB2312
全称是《信息交换用汉字编码字符集基本集》,它是双字节编码,总的编码范围是A1~F7,其中从A1~A9是符号区,总共包含682个符号,从B0~F7是汉字区,包含6763个汉字。4.GBK
全称叫《汉字内码扩展规范》,是国家技术监督局为Windows 95所制定的新的汉字内码规范,它的出现是为了扩展GB2312,加入更多的汉字,它的编码范围是8140~FEFE(去掉XX7F),总共有23940个码位,它能表示21003个汉字,它的编码是和GB2312兼容的,也就是说用GB2312编码的汉字可以用GBK来解码,并且不会有乱码。5.GB18030
全称是《信息交换用汉字编码字符集》,是我国的强制标准,它可能是单字节、双字节或者四字节编码,它的编码与GB2312编码兼容,虽然是国家标准,但是实际应用系统中使用得并不广泛。

===

文件编码 ANSI、GBK、GB2312、MS936、MS932、SJIS、Windows-31 、EUC-JP 、EBCDIC 等等之间的区别与联系相关推荐

  1. 关于编码ansi、GB2312、unicode与utf-8的区别

     关于编码ansi.GB2312.unicode与utf-8的区别 2014-01-25 08:51 529人阅读 评论(0) 收藏 举报 本文章已收录于: 关于编码ansi.GB2312.uni ...

  2. AJPFX解析关于编码ansi、GB2312、unicode与utf-8的区别

    大家平时遇到乱码问题是否有自己的一套解决方案?这篇文章就是介绍一下常用的编码方式 关于编码ansi.GB2312.unicode与utf-8的区别 先做一个小小的试验: 在一个文件夹里,把一个txt文 ...

  3. Shell应用:批量将文件编码由gbk转utf-8

    Shell应用:批量将文件编码由gbk转utf-8,实例代码: [plain] #!/bin/bash // batch_change_GB2312_to_UTF-8 cd directory fin ...

  4. oracle gbk ebcdic,文件编码 ANSI、GBK、GB2312、MS936、MS932、SJIS、Windows-31 、EUC-JP 、EBCDIC 等等之间的区别与联系...

    ■前言 暂且不谈 UTF-8,Unicode (UTF-8只是Unicode的一种实现方式) https://blog.csdn.net/sxzlc/article/details/106084402 ...

  5. [转]各种编码ANSI、GB2312、GBK、GB18030、UNICODE以及UTF-8傻傻分不清!

    计算机编程中的编码一直是让新手非常头疼的问题,特别是 GBK.GB2312.UTF-8 这三个比较常见的网页编码的区别,更是让许多新手晕头转向,怎么解释也解释不清楚,看一遍貌似懂了,但实际使用的时候又 ...

  6. 以ansi ,gbk,gb2312格式进行base64 加密和 base64解密(防止中文乱码)

    ** 直接上代码 一.toBase64ByGBK.js封装的是加密解密的方法 ``** //把Unicode转成Ansi和把Ansi转换成Unicode function UnicodeChr() { ...

  7. java获取文件编码

    目录 1. 概述 2. 编码基本知识 2.1. iso8859-1 2.2. GB2312/GBK 2.3. unicode 2.4. UTF 3.JAVA中移位运算>> , <&l ...

  8. 转 Linux查看文件编码格式及文件编码转换

    2019独角兽企业重金招聘Python工程师标准>>> 如果你需要在Linux 中操作windows下的文件 ,那么你可能会经常遇到文件 编码 转换的问题.Windows中默认的文件 ...

  9. linux中zip文件编码错误,解决linux下zip文件解压乱码问题

    原标题:解决linux下zip文件解压乱码问题 解决linux下zip文件解压乱码问题 原因 由于zip格式并没有指定编码格式,Windows下生成的zip文件中的编码是GBK/GB2312等,因此, ...

  10. 使用 windows命令和iconv.exe批量转换文件编码

    使用 windows命令和iconv.exe批量转换文件编码    iconv是知名的开源跨平台编码转换库,iconv.exe是iconv库在windows下的命令行工具,iconv.exe的一般用法 ...

最新文章

  1. HI3519安装SDK错误
  2. iOS - Swift NSValue 值
  3. 虚拟化部署之Hyper-V虚拟网络配置
  4. 厉害了,BATJ 必考的 Java 面试题!
  5. neo4j设置节点或者边的显示,包括颜色、属性、大小
  6. Android 查看设备文件
  7. redis常用命令与特性
  8. 常用的Linux关机命令!
  9. T-SQL Enhancement in SQL Server 2005[下篇]
  10. 利用jquery实现电商网站常用特效之:五星评分
  11. New features in EJB3.1 (Part 4)
  12. Git小乌龟的安装及使用
  13. Mac photoshop cc 2017 破解补丁
  14. 科技爱好者周刊:第 91 期
  15. Redfish协议测试工具–Postman
  16. 杂项 Chrome浏览器截取长图
  17. cookie用法--抽屉网的自动登录(cookie是通过代码自动获取的)
  18. 2020-11-01(电脑耳机声音外放)
  19. c语言中哪个键是逐行运行的,c语言中的快捷键有哪些?
  20. choice数据库导出股票数据

热门文章

  1. APP开发流程,移动应用开发流程
  2. [Xcode]XcodeGhost问题的检查和验证
  3. JAVA这门语言 如何从刚毕业的小菜鸟进阶成月薪15K以上的工程师
  4. Python编程实践之Choose
  5. c#明华rf读卡器_RF通用开发包 明华RF读卡器 demo for c#(RF reader demo for c#) - 下载 - 搜珍网...
  6. android 免root自动滑动,无需root自动点击屏幕软件
  7. 【计算机组成与设计学习笔记】(一)
  8. SQL 删除重复数据,重复数据只保留ID最小的行
  9. ubuntu vscode 配置字体_配置vscode终端字体,vscode终端字体
  10. 萤火虫(FA)算法(附完整Matlab代码,可直接复制)