`

JVM 字符编码转换

    博客分类:
  • NLP
阅读更多

JVM中字符都以UTF-16的编码方式存在,即在代码中定义的所有变量和数据,在JVM中都是按照UTF-16进行编码。然而,JVM只是Java的虚拟机,所有数据最终还是要通过操作系统存储在内存中。所以,JVM和操作系统之间会进行编码转换。如果使用的是中文的Windows操作系统,那么JVM就会将字符转换成GBK的编码方式传输给操作系统进行存储。

 

JVM对数据的读取与写入操作分成两种类型,一种是以字符形式进行读写(Reader和Writer),另一种是以字节流进行读写(InputStream和OutputStream)。其中,面向字节的读写,不存在编码转换的问题,因为它是保证系统中的文件二进制内容和读入JVM内部的二进制内容要一致,即只要保证数据的0、1顺序不变就行;对于面向字符的方式,是要保证系统中的存放的内容和读入JVM内部的内容要一致,即读入的字符为“我”, 那么在系统中存放的内容也得是“我”。但是系统的编码方式和JVM的编码方式不同,所以两者之间需要进行编码转换。在Java中,完成编码转换的工作由InputSteamReader和OutputStreamWriter类完成。这两个类是字符流和字节流之间的适配器,用户选择不同的编码进行读取和写入。

比如:new OutputStreamWriter(new FileOutputStream("文件路径"),"UTF-8"),就是以UTF-8的编码方式写入硬盘中。

分享到:
评论

相关推荐

    java字符编码转换详细过程

    那么,在这些过程中,JDK和JVM是如何将这些文件如何编码和解码并运行的呢? 这里,以中文win2k操作系统为例说明JAVA类是如何来编码和被解码的。 第 一步,我们在中文win2k中用编辑软件如记事本编写一个Java源程序...

    jvm-types:一个游乐场,用于收集我们在每个项目中使用且不想重新实现的类型的示例

    下一个问题是:是否有支持这种JVM编码风格的库? 还是我应该开始从我的代码中提取一个;)。 甚至可以创建一个包含典型Web应用程序中所需类型的jvm库吗? 我们认为这是可能的。 这是一个我们可以探索想法的项目。...

    JavaFocus::hammer: Java重点内容 博客文章 样例

    hammer: Java学习重点 博客文章 样例语言基础Java如何实现平台无关性的JDK、JRE、JVM的关系局部变量为什么需要初始化浮点数为什么不精确BigDecimal的坑数据转换的坑运算符需要注意的递归的效率问题编码,字符集,...

    Java开发实战1200例(第1卷).(清华出版.李钟尉.陈丹丹).part3

    实例065 字符与Unicode码的转换 83 4.2 辨别字符串 84 实例066 判断用户名是否正确 84 实例067 用户名排序 85 实例068 判断网页请求与FTP请求 86 实例069 判断文件类型 87 实例070 判断字符串是否为数字 89 实例071 ...

    125集专攻JAVA基础 JAVA零基础入门学习视频教程 动力节点JAVA视频教程.txt

    北京动力节点-Java编程零基础教程-049-Java基本语法-通过ASCII再理解字符编码.avi 北京动力节点-Java编程零基础教程-050-Java基本语法-ASCII.avi 北京动力节点-Java编程零基础教程-051-Java基本语法-ISO8859-1....

    千方百计笔试题大全

    55、编码转换:怎样将GB2312 编码的字符串转换为ISO-8859-1 编码的字符串? 14 56、写一个函数,要求输入一个字符串和一个字符长度,对该字符串进行分隔。 14 59、Java 编程,打印昨天的当前时刻。 15 60、java 和...

    java面试宝典

    55、编码转换:怎样将GB2312 编码的字符串转换为ISO-8859-1 编码的字符串? 14 56、写一个函数,要求输入一个字符串和一个字符长度,对该字符串进行分隔。 14 59、Java 编程,打印昨天的当前时刻。 15 60、java 和...

    突破程序员基本功的16课.part2

    5.1.1 JVM对字符串的处理 5.1.2 不可变的字符串 5.1.3 字符串比较 5.2 表达式类型的陷阱 5.2.1 表达式类型的自动提升 5.2.2 复合赋值运算符的陷阱 5.3 输入法导致的陷阱 5.4 注释的字符必须合法 5.5 转义...

    1_6_zh_CN.CHM

    java.applet 提供创建 applet 所必需的类和 applet 用来与其 ...java.nio.charset 定义用来在字节和 Unicode 字符之间转换的 charset、解码器和编码器。 java.nio.charset.spi java.nio.charset 包的服务提供者类。

    JAVA面试题最全集

    编码转换,怎样实现将GB2312编码的字符串转换为ISO-8859-1编码的字符串。 9.Java中访问数据库的步骤,Statement和PreparedStatement之间的区别。 10.找出下列代码可能存在的错误,并说明原因: 二、JSP&Servlet...

    Java JDK 7学习笔记(国内第一本Java 7,前期版本累计销量5万册)

    4.4.3 字符串编码 115 4.5 查询java api文件 117 4.6 重点复习 119 4.7 课后练习 120 chapter5 对象封装 125 5.1 何谓封装 126 5.1.1 封装对象初始流程 126 5.1.2 封装对象操作流程 128 5.1.3 封装...

    java面试题

    84.2. 我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种编码的字符串? 106 84.3. 设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。以下程序使用...

    JDK_API_1_6_zh_CN_downcc.com.zip 良心一级分

    java.nio.charset 定义用来在字节和 Unicode 字符之间转换的 charset、解码器和编码器。 java.nio.charset.spi java.nio.charset 包的服务提供者类。 java.rmi 提供 RMI 包。 java.rmi.activation 为 RMI 对象...

    最新Java面试宝典pdf版

    19、我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种编码的字符串? 90 20.现在输入n个数字,以逗号,分开;然后可选择升或者降序排序;按提交键就在另一页面显示按什么排序...

    Java面试笔试资料大全

    19、我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种编码的字符串? 90 20.现在输入n个数字,以逗号,分开;然后可选择升或者降序排序;按提交键就在另一页面显示按什么排序...

Global site tag (gtag.js) - Google Analytics