String构造方法带字符编码集的作用

java使用的有unicode默认字符编码集(刚搜了下,好像是系统默认的字符编码Charset.defaultCharset()),所以直接new String("测试".getBytes(),charset)是没有意义的。

在读取外部数据的时候,才是使用字符编码集的意义。

InputStream is;

byte[] b = new byte[is.available()];

is.read(b);

String s = new String(b,charset);

如果外部文件不是默认的字符编码集,加上字符编码集就可以读到正确的文件了。

如读取一个txt文件的内容

BufferedReader fReader = new BufferedReader(new FileReader(fileName));

fReader.readLine();

如果字符编码不对读取到的可能就是乱码

new String(fReader.readLine().getBytes(),charset)

这样就不是乱码了

或者可以使用如下这种方式

BufferedReader fReader = new BufferedReader(new InputStreamReader(new FileInputStream(fileName),charset));

fReader.readLine();

这样就能读取到非乱码的字符了

同理输出的时候,如果客户端的默认编码集不一直,输出的时候也要加上设置的字符编码

写到后面好像发现和标题相关不大啊,意思一样的。。。

时间: 2024-10-13 17:19:37

String构造方法带字符编码集的作用的相关文章

字符编码集

•ASCII(American Standard Code for Information Interchange,美国信息互换标准代码),是基于常用的英文字符的一套电脑编码系统.我们知道英文中经常使用的字符.数字符号被计算机处理时都是以二进制码的形式出现的.这种二进制码的集合就是所谓的ASCII码.每一个ASCII码与一个8位(bit)二进制数对应.其最高位是0,相应的十进制数是0-127.如,数字“0”的编码用十进制数表示就是48.另有128个扩展的ASCII码,最高位都是1,由一些制表符和

字符编码集格式

Java 字符编码与解码   1.字符编码的发展历程 ①.ASCII 码 因为计算机只认识数字,所以我们在计算机里面的一切数据都是以数字来表示,因为英文字符有限,所以规定使用的字节的最高位是 0,每一个字节都是以 0-127 之间的数字来表示.比如 A 对应 65,a 对应 97.这便是 美国标准信息交换码,ASCII ? 1 2 3 String str = new String("Aa"); byte[] strASCII = str.getBytes("ASCII&qu

【Java基础】Java中的char是否可以存储一个中文字符之理解字符字节以及编码集

Java中的一个char采用的是Unicode编码集,占用两个字节,而一个中文字符也是两个字节,因此Java中的char是可以表示一个中文字符的. 但是在C/C++中由于采用的字符编码集是ASCII,只有一个字节,因此是没办法表示一个中文字符的. 解答了上面的浅显易懂的问题之后,下面彻底理清楚字符 字节以及编码的原理. 其实关于编码以及字节的问题,在腾讯实习生一面的时候也问到过,当时搞不懂面试官为什么会问这个问题,现在想想,这个问题还是很考验一个人的思考以及钻研深度的,而且这个问题远远比自己想象

编程必备基础知识|计算机组成原理篇(06):计算机的字符与编码集

计算机基础方面的知识,对于一些非科班出身的同学来讲,一直是他们心中的痛,而对于科班出身的同学,很多同学在工作之后,也意识到自身所学知识的不足与欠缺,想回头补补基础知识.关于计算机基础的课程很多,内容繁杂,但无论是相关书籍还是大学课程,都有点脱离工作.特别地,计算机基础知识体系庞杂,想要从零学习或者复习都耗时耗力. 有鉴于此,本系列文章将带你更快的补足编程必备基础知识,涵盖计算机领域三大基础知识:计算机组成原理.操作系统.计算机网络,这些都是大学计算机课程里面最重要的内容.文章对这些内容做了提炼和

字符编码及java中的应用总结小记

这几日突然想搞清楚常见字符编码(ASCII.GBK.UTF.Unicode.ISO-8859-1)的关系及项目中可能存在的相关隐患,网上搜索了一大堆资料,这里结合代码实测,简单做个小结: 浅谈这几种编码的出现 1.1 ASCII 我们知道,在计算机内部,所有信息最终被表示为二进制字符串,每个二进制位有1和0两种表现形式,位是内存最小存储单位,其中8位构成一个字节,字节是数据存储的最小单元,因此8个二进制位即一个字节可以表示256个符号,从00000000-11111111. 上个世纪60年代,美

Java 使用Charset类解决读入字符乱码问题和控制输出字符编码

Java中用UTF-16编码字符(见博文Java 正确遍历字符串),Charset类建立了UTF-16编码的字节序列和其它字符编码方式的字节序列之间的映射.当从外面读入表示字符的字节流时,我们可以通过Charset类指定原来字符的编码方式,好让程序可以正确的把字符原来的字节编码转化为Java自己的字节编码:同样,当把字符写出时,我们可以通过Charset指定字符的编码方式.下面举两个简单的例子来说明Charset的使用. public void test1() { Charset charset

JavaWeb中遇到的字符编码问题

一.常见的编码方式 1.UTF-8 2.ISO-8859-1 二.Tomcat的编码问题 Tomcat8和7的编码方式 Tomcat7对URI默认编码是ISO-8859-1 Tomcat8对URI默认编码是UTF-8 官网解释: https://tomcat.apache.org/tomcat-7.0-doc/config/http.html URIEncoding :This specifies the character encoding used to decode the URI byt

Java String构造方法

感谢大神: https://www.cnblogs.com/JavaSubin/p/5450849.html 2,常见构造方法 public String():空构造 public String(byte[] bytes):把字节数组转成字符串 public String(byte[] bytes,int index,int length):把字节数组的一部分转成字符串 public String(char[] value):把字符数组转成字符串 public String(char[] val

Servlet字符编码过滤器

在Java Web程序开发中,由于Web容器内部使用编码格式并不支持中文字符集,所以,处理浏览器请求中的中文数据就会出现乱码的现象.由于Web容器使用了ISO-8859-1的编码格式,所以在Web应用的业务处理中也会使用ISO-8859-1编码格式.虽然浏览器提交的请求使用的是中文编码格式UTF-8,但经过业务处理中的ISO-8859-1编码,仍然会出现中文乱码现象.解决此问题的方法非常简单,在业务处理中重新指定中文字符集进行编码即可解决.在实际的开发过程中,如果通过每一个业务处理指定中文字符集