JAVA 编码中文简述
中文编码问题虽然是个老问题,但对不熟悉的人来说还是不好处理的。不过Java中已经有了一套比较成熟的解决方案。
首先对中文编码格式予以简单介绍:
中文编码有三套国标:GB2312,GBK,GB18030,从前到后互为超集。GBK最为常见。这里不展开介绍,具体可以谷歌。
不过国际上通用的还是UTF-8,如果我们自己写中文的话,最好以UTF-8的方式编码,不然处理起来真的很麻烦。
下面以Java读文件为例,说明一下java处理中文编码的方法。
java可以按字符读,也可以按字节流读,不管怎么样,读中文的时候都要涉及到编码解码的问题。
按字符读,不显式指定编码的话,一般是按本地环境的默认字符集,中文就是GBK。
如果显式指定字节解码就要用到InputStreamReader类,它是字节转向字符的桥梁。
它的一个构造方法: InputStreamReader(InputStream,Charset),可以显式的指定解码方式。
如果我们知道了中文文件的编码,在Charset参数中指定,就不会出现乱码了。
当我们用String对象保存中文时,也可以显式的指定编码方式。比如:
String example = "中文字符串";
byte[] b = example.getBytes("UTF-8"); //这个方法将中文重新以UTF-8的方式编码。并返回字节流数组。
String newStr = new String(b,"UTF-8"); // 将字节流以UTF-8的方式,转化为字符串。
实际上,getBytes()是调用Charset类来进行编码的。
Charset类是java内部专门用于编码解码的类,更为显式。
Charset charset = Charset.forName("UTF-8");
ByteBuffer byteBuffer = charset.encode(String);
CharBuffer charBuffer = charset.decode(byteBuffer);
具体展开可以参考下面博客,讲的很清晰:
https://www.ibm.com/developerworks/cn/java/j-lo-chinesecoding/
JAVA 编码中文简述的更多相关文章
- java中文乱码解决之道(四)-----java编码转换过程
		
前面三篇博客侧重介绍字符.编码问题,通过这三篇博客各位博友对各种字符编码有了一个初步的了解,要了解java的中文问题这是必须要了解的.但是了解这些仅仅只是一个开始,以下博客将侧重介绍java乱码是如何 ...
 - java中文乱码解决之道(四)—–java编码转换过程
		
原文出处:http://cmsblogs.com/?p=1475 前面三篇博客侧重介绍字符.编码问题,通过这三篇博客各位博友对各种字符编码有了一个初步的了解,要了解java的中文问题这是必须要了解的. ...
 - 【JAVA编码专题】总结
		
第一部分:编码基础 为什么需要编码:用计算机看得懂的语言(二进制数)表示各种各样的字符. 一.基本概念 ASCII.Unicode.big5.GBK等为字符集,它们只定义了这个字符集内有哪些字符,以及 ...
 - 【JAVA编码专题】深入分析 Java 中的中文编码问题
		
http://www.ibm.com/developerworks/cn/java/j-lo-chinesecoding/ 几种常见的编码格式 为什么要编码 不知道大家有没有想过一个问题,那就是为什么 ...
 - Java 编码 字符集
		
Java 编码 字符集 @author ixenos 1. 字符集 a) 字符集建立了两字节Unicode码元序列与使用本地字符编码方式的字节序列之间的映射. b) 为了兼容其它命名, ...
 - java编码问题
		
工作中经常遇到java编码问题,由于缺乏研究,总是无法给出确切的答案,这个周末在网上查了一些资料,在此做些汇总. 问题一:在java中读取文件时应该采用什么编码? Java读取文件的方式总体可以分为两 ...
 - Java编码问题汇总
		
转自 http://www.blogjava.net/zhangchao/archive/2011/05/26/351051.html Thanks Java编码问题汇总 工作中经常遇到java编码问 ...
 - maven构建项目时硬编码中文乱码问题解决
		
场景:1. 项目采用maven作为构建工具.2. 前端页面为jsp,由前端团队独立完成,添加编码配置:<%@ page contentType="text/html;charset=u ...
 - Java编码问题原因以及解决
		
一.文件编码 Unicode 是首选编码.Unicode 是全球范围的字符编码标准. 小结: GBK 与unicode之间的转换是通过gbk unicode映射表. UTF-8 与unicode之间的 ...
 
随机推荐
- js中的fadeIn()
			
一.fadeIn()淡入,fadeOut()淡出 fadeIn()和fadeOut()括号里边跟执行的时间
 - iOS中JS 与OC的交互(JavaScriptCore.framework)
			
iOS中实现js与oc的交互,目前网上也有不少流行的开源解决方案: 如:react native 当然一些轻量级的任务使用系统提供的UIWebView 以及JavaScriptCore.framewo ...
 - iframe 内显示的网页 只显示改网页的某一部分!
			
使用iframe调用指定网页的特定位置(显示目标网页某区域的我想要的内容) 有些时候我们并不需要显示iframe标签属性src指定的目标网页的所有内容,往往只需要显示某一特定区域.现有两种实现方法提供 ...
 - svn用法:摘自http://wh-vip-126-com200907043220.iteye.com/blog/424642
			
下载最新版本svn(http://www.visualsvn.com/server/ ) 1.安装SVN 2.创建user与repository 3.Eclipse下配置SVN插件 3.1帮助- ...
 - 树(一)——线段树
			
问题 现在有1~30这30个数,数N被抽上的概率正比于1/sqrt(N+1),求满足这个概率分布的随机数发生器. 思路 第一,如何解决这个"概率正比"问题. 第二,如何产生满足条件 ...
 - hdu 5876 ACM/ICPC Dalian Online 1009 Sparse Graph
			
题目链接 分析:这叫补图上的BFS,萌新第一次遇到= =.方法很简单,看了别人的代码后,自己也学会了.方法就是开两个集合,一个A表示在下一次bfs中能够到达的点,另一个B就是下一次bfs中到不了的点. ...
 - Educational Codeforces Round 14 D. Swaps in Permutation
			
题目链接 分析:一些边把各个节点连接成了一颗颗树.因为每棵树上的边可以走任意次,所以不难想出要字典序最大,就是每棵树中数字大的放在树中节点编号比较小的位置. 我用了极为暴力的方法,先dfs每棵树,再用 ...
 - 在Linux中使用vi打开文件时如何显示行号,及跳转到指定行
			
vi 文件名,打开文件后 如果要显示所有行号,使用 :set nu 如果要显示当前行号,使用 :nu 如果要跳转到指定行,使用 :行号 例如,跳转到第10行,使用 :10
 - linux 下mysql的启动 、调试、排错
			
Linux 下 MySQL 启动与关闭 说明 一.启动 1.1 MySQL 进程 可以用ps 命令查看进程: [root@rac2 ~]# ps -ef|grep mysql root 21 ...
 - git add 命令添加所有改动内容
			
git add xx命令可以将xx文件添加到暂存区,如果有很多改动可以通过 git add -A .来一次添加所有改变的文件. 注意 -A 选项后面还有一个句点. git add -A表示添加所有内容 ...