签名、BOM头、编码、Windows记事本编码、java编码解码的那些事

			对于Windows记事本:
			ANSI				:GB2312				java中应使用GBK解码
			Unicode				:有签名的UTF-16LE	java中应使用UTF-16解码
			Unicode big endian	:有签名的UTF-16BE	java中应使用UTF-16解码
			UTF-8				:有签名的UTF-8		java中只能手动去掉签名了再用UTF-8解码了

			对于java程序的解码:
			GBK		:GBK编码可以兼容GB2312,因此用GBK处理GBK、GB2312两种编码
			UTF-8	:无签名的UTF-8
			UTF-16	:有签名的UTF-16LE或UTF-16BE,两者根据签名自动识别
			UTF-16BE:无签名的UTF-16BE
			UTF-16LE:无签名的UTF-16LE

			UNICODE其实只是字符集而不是编码,Windows的记事本用Unicode来代表有签名的UTF-16LE有些
			不恰当,记事本里面的ANSI在不同系统会映射成不同编码,在中文系统是GB2312编码,在英文系
			统是ASCII编码

			签名又叫BOM,即字节顺序标记,它是插入到以UTF-8、UTF16或UTF-32编码Unicode文件开头的
			特殊标记,用来识别Unicode文件的编码类型。对于UTF-8来说,BOM并不是必须的,因为BOM用来
			标记多字节编码文件的编码类型和字节顺序(big-endian或little- endian)。
			BOMs 文件头:

			00 00 FE FF    = UTF-32, big-endian

			FF FE 00 00    = UTF-32, little-endian

			EF BB BF       = UTF-8,

			FE FF          = UTF-16, big-endian

			FF FE          = UTF-16, little-endian

  

时间: 2025-01-04 17:33:45

签名、BOM头、编码、Windows记事本编码、java编码解码的那些事的相关文章

CheckStyle,定制自己的Java编码规范

前言 一.CheckStyle简介 Checkstyle是一个开发工具,可以帮助程序员编写遵循编码标准的Java代码.它自动化了检查Java代码的过程,以避免人类完成这一枯燥(但很重要)的任务.这使得它非常适合那些希望实施编码标准的项目.Checkstyle是高度可配置的,可以支持几乎任何编码标准,默认内置Sun Java编码规范和Google Java编码规范两套配置文件,我们也可以根据自己的需要配置自己的规范. 二.CheckStyle的安装 与其它的插件一样,CheckStyle插件也提供

微软平台文件编码兼容Unix不生成BOM头

遇到一个问题,.NET后台生成HTML到了Linux上就会多出一行乱码,样式会乱,查原因是因为.NET运行在windows平台,生成UTF-8会自动加一个BOM头. 去掉BOM其实关键代码就这么一行 System.Text.UTF8Encoding utf8 = new System.Text.UTF8Encoding(false);                StreamWriter sw = new StreamWriter(nFile,utf8); 下面2个文件是去掉的和未去掉的,其中

使用editplus等编程工具时UTF-8编码去掉BOM头方法(转载备查)

Unicode规范中有一个BOM的概念.BOM--Byte Order Mark,就是字节序标记.在这里找到一段关于BOM的说明: 在UCS 编码中有一个叫做"ZERO WIDTH NO-BREAK SPACE"的字符,它的编码是FEFF.而FFFE在UCS中是不存在的字符,所以不应该出现在实际传输中.UCS规范建议我们在传输字节流前,先传输 字符"ZERO WIDTH NO-BREAK SPACE".这样如果接收者收到FEFF,就表明这个字节流是Big-Endia

Java 编码与字符

一.字符集介绍 ANSI:American National Standards Institute.中文:美国国家标准学会 不同国家的和地区为此制定了不同标准,由此产生了 GB2312.GBK.Big5.Shift_JIS 等各自的编码标准.这些使用 1 至 4 个字节来代表一个字符的各种汉字延伸编码方式,称为 ANSI 编码.在简体中文Windows操作系统中,ANSI 编码代表 GBK 编码:在日文Windows操作系统中,ANSI 编码代表 Shift_JIS 编码. 不同 ANSI 编

INI文件格式以及Java编码实现读取

INI是 initialization的缩写.INI文件是一种轻量级的配置文件,广泛地用于各种操作系统和软件中.INI文件是一种简单的文本文件,基本结构很简单.可读性高,必要的元素只有两种:section.property(包括name/key和value). 历史: 在MS-DOS和16位Windows系统中,直到Windows ME为止,都是使用INI文件作为操作系统配置文件(比如:win.ini, system.ini),用来配置驱动.字体.启动项.等等等等.各种应用软件也广泛地采用INI

java编码问题

工作中经常遇到java编码问题,由于缺乏研究,总是无法给出确切的答案,这个周末在网上查了一些资料,在此做些汇总. 问题一:在java中读取文件时应该采用什么编码? Java读取文件的方式总体可以分为两类:按字节读取和按字符读取.按字节读取就是采用InputStream.read()方法来读取字节,然后保存到一个byte[]数组中,最后经常用new String(byte[]);把字节数组转换成String.在最后一步隐藏了一个编码的细节,new String(byte[]);会使用操作系统默认的

Java编码问题汇总

转自 http://www.blogjava.net/zhangchao/archive/2011/05/26/351051.html Thanks Java编码问题汇总 工作中经常遇到java编码问题,由于缺乏研究,总是无法给出确切的答案,这个周末在网上查了一些资料,在此做些汇总. 问题一:在java中读取文件时应该采用什么编码? Java读取文件的方式总体可以分为两类:按字节读取和按字符读取.按字节读取就是采用InputStream.read()方法来读取字节,然后保存到一个byte[]数组

Java编码

转自:http://www.blogjava.net/zhangchao/archive/2011/05/26/351051.html Thanks Java编码问题汇总 工作中经常遇到java编码问题,由于缺乏研究,总是无法给出确切的答案,这个周末在网上查了一些资料,在此做些汇总. 问题一:在java中读取文件时应该采用什么编码? Java读取文件的方式总体可以分为两类:按字节读取和按字符读取.按字节读取就是采用InputStream.read()方法来读取字节,然后保存到一个byte[]数组

10个精妙的Java编码最佳实践

这是一个比Josh Bloch的Effective Java规则更精妙的10条Java编码实践的列表.和Josh Bloch的列表容易学习并且关注日常情况相比,这个列表将包含涉及API/SPI设计中不常见的情况,可能有很大影响. 我在编写和维护jOOQ(Java中内部DSL建模的SQL)时遇到过这些.作为一个内部DSL,jOOQ最大限度的挑战了Java的编译器和泛型,把泛型,可变参数和重载结合在一起,Josh Bloch可能不会推荐的这种太宽泛的API. 让我与你分享10个微妙的Java编码最佳