为什么用iso-8859-1来转换字符集
来源:互联网 发布:阿里云备案网站负责人 编辑:程序博客网 时间:2024/06/04 16:43
为什么用iso-8859-1来转换字符集
在学习的时候,记得总是使用iso-8859-1来转换字符集。当时也没注意,今天又碰到中文乱码,查了下iso-8859-1,大概明白了一些。
- 在java本身读取不到系统字符集的时候,默认使用的iso-8859-1
- iso-8859-1是单字节表示,所以无法表示255之上的字节,比如中文作为String输出的时候就会乱码,但是我们可以通过new String(iso_bytes, charset)的方法来得到正确的中文。
- 转换的时候getBytes和new String(byte[], charset)应该是相同的,才可以正确还原String内容。但是如果是iso-8859-1不能针对一个字符进行解码,那么就不可能再还原出来。
- 但是有一种情况来说,就可以实现字符集的转换,这就是先把文件内容转换成String到java内存中,然后就可以以任何字符集进行读出来。道理很简单,因为java本身String没有编码,内部使用的是utf-16存储,所以不论什么字符集到java的String里,都会变成utf-16存储,但是java负责从utf-16到其他字符集的对应关系,所以都出来的不乱码。
所以来说,我们需要保证写和读的字符集是相同的,并且存储的字符集可以正确编码这些内容(ISO-8859-1就不能编码中文),才可以保证中文的不乱码.
但是在java中,String是使用unicode表示,没有字符集的区别。所以我们可以从任何支持与unicode转换的字符集来互相转换,包括iso-8859-1.就像是Java提供了一个中间的标准编码字典,同时提供与各个字符集的转换对照表一样。所以我们在转换的时候,只需要getBytes时候选同样的字符集,就能解析出来同样的byte数组,然后交给unicode去自己对照设置的字符集,组成unicode.
PS:
- 在XFTP上传时候选择utf8,但是只是针对名称进行了utf8转化,内容还是gbk的。
0 0
- 为什么用iso-8859-1来转换字符集
- MYSQL数据库字符集转换由iso-8859-1转gbk
- 字符在转换为ISO-8859-1字符集时可能会遭到破坏
- 各种ISO 8859字符集
- ISO Latin-1字符集
- ISO Latin-1字符集
- ISO Latin-1字符集
- ISO Latin-1字符集
- ISO Latin-1字符集
- ISO Latin-1字符集
- ISO Latin-1字符集
- ISO Latin-1字符集
- 关于tomcat中文乱码问题,为什么要先转换为ISO-8859-1!
- 关于tomcat中文乱码问题,为什么要先转换为ISO-8859-1
- ISO 8859 语言字符集详解
- Zen Cart 改 iso-8859-1字符集为 utf-8
- HTML H5 ISO-8859-1 ASCII实体转义字符集
- 字符集与编码八之ASCII和ISO-8859-1
- JAVA学习代码——实现文件名的过滤
- leetcode之求组合数
- Source Insight 3.x serial 序列号
- Linux下c语言线程池的实现
- IOCP不可忽视的细节
- 为什么用iso-8859-1来转换字符集
- NoSQL_Cassandra_教程四_搭建Cassandra的数据库集群
- 股票 趋势
- 编写一个Java程序,用if-else语句判断某年份是否为闰年。
- nodeJS之http搭建服务端和客户端
- web开发中css选择器使用
- Hbase shell常用命令总结
- USACO2007 Open Cheappal
- Linux 下Mysql主从复制