JVM-characters

来源:互联网 发布:java多泛型 编辑:程序博客网 时间:2024/06/16 12:24

Which characters does JVM use (JVM使用哪种字符表示)?( B )
A. ASOI characcers B.Unicude charactcrs
C. Cp1252 D. UTF-8

JVM的设计者当初决定JVM中所有字符的表示形式时,是不允许使用各种编码方式的字符并存的。这是因为如果在内存中的Java字符以GB2312、UTF-16、BIG5等各种编码形式存在,那么对开发者来说,连进行最基本的宁符串打印,连接等操作都会寸步难行。
例如, 一个GB2312的字符串后面连接-个UTF-8的字符串,那么连接后的最终结果应该是什幺编码的呢?选哪一个都没有道理。
Java开发者必须牢记:在Java中字符只以一种形式存在,那就是Unicode(不选择任何特定的编码,直接使用它们在字符集中的编号,这是统一的唯一方法)。
但“在Java中”到底是指在哪哩呢?是指在JVM巾、在内存L、在你的代码里
声明的每一个char. String类型的变陵中。例如,你征程序巾这样写:

char han='永'

在内存的相应区域,这个字符就表示为Ox6c38。

这其实也是说,只要你正确地读人了“永”字,那么它在内存中的表示形式一定是Ox6c38,没有任何其他的值能代表这个字。

JVM的这种约定使得一个字符分为两部分:JVM内部和os的文件系统。在JVM 内部,统一使用UnicoLle表示,当这个字符被从JVM内部移到外部(即保存为文件系统中的一个文件的I^J容时),就进行了编码转换,使用了具体的编码方案。因此可以说,所有的编码转换只发生在边界的地方,JVM和OS的交界处,也就是各种输入/输出流(或者Reader,Writcr类)起作用的地方。


所有的I/O基本可以分为两大阵营:

1.面向字符的输入,输出流
2**.面向字节的输入,输出流**;
面向字符或者说面向字节中的所谓“面向”,是指这些芟在处理输入,输出的时候,在哪个意义上保持一致。
如果面向字节,那么这类工作要保证系统中的文件二进制内容和读入JVM内部的二进制内容一致,不能变换任何0和1的顺序。这种输入,输出方式很适合读人视频文件或者音频文件,或者任何不需要做变换的文件内容。
面向字符的I/o是指希望系统中的文件的字符和读人内存的“字符要一致。例如,我们的中文版WindowsXP系统上有一个GBK的文本文件,其中有一个“永”字,这个字的GBK编码什么不用管,当我们使用面向字符I/O把它读入内存并保存在一个char型变量中时,我希望I/O系统不要直接把“永”字的GBK编码放到这个字符( char)型变量中,我不关心这个char型变量具体的二进制内容到底是多少,我只希望这个字符读进来之后仍然是“永”字。
从这个意义上也可以看出,面向字符的I/O类,也就是Reader和Writer类,实际隐式地做了编码转换,在输出时,将内存中的Unicode字符使用系统默认的编码方式进行了编码,而在输入时,将文件系统中已经编码过的字符使用默认编码方案进行还原。这里要注意:Reader和Writer只会使用这个默认的编码来做转换,而不能为。个Reader或者Writer指定转换时使用的编码。这也意味着,如果使用中文版WindowsXP系统,其中存放了一个UTF-8编码的文件,当采用Reader娄来读人的时候,它还会使用GBK来做转换,转换后的内容当然不对。迭其实是一种傻瓜式的功能提供方式,对大多数初级用户(以及不需要跨平台的高级用户)来说反而是一件好事。
如果用到GBK编码以外的文件,就必须采用编码转换:一个字符与字节之间的转
换。因此,Java的I,o系统中能够指定转换编码的地方,也就在字符与字节转换的地
方,那就是InputStreamReader和OutputSLreamWriter。这两个类是字节流和字符流之问
的适配器类,它们承担编码转换的任务。

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 邮箱注册微博需要手机验证怎么办 苹果手机的ad码忘记了怎么办 苹果手机酷狗音乐没有声音怎么办 在手机屏上不能缷载软件怎么办? 手机酷狗音乐下载歌曲要钱怎么办 酷狗下载歌曲后歌词不见了怎么办 手机酷我音乐缓冲文件损坏怎么办 苹果手机音乐里的歌删掉了怎么办 上课学生把粉笔擦藏起来了怎么办 手机没法解压10g压缩包怎么办 苹果id被锁邮箱也忘记密码怎么办 手机号注册的微信忘记密码怎么办 qq号注册微信忘记密码怎么办 云课堂密码忘记手机号更改了怎么办 孩子做事才要奖励怎么办的教案 员工做事效率低家庭情况不好怎么办 安全云课堂人脸识别失败怎么办 酷我k歌里音乐太少怎么办 酷狗里面的歌没有了怎么办 第一试用网登录密码忘记了怎么办 第一试用网登录密码忘了怎么办 微博登录直播间帐号被锁定怎么办 硫酸不小心弄到皮肤上怎么办 小米平板进水了开不了机怎么办 U盘被弹出后再插没有显示怎么办 视频从U盘传下来不能播放怎么办 微博账号忘了登录名怎么办 迅雷应版权方要求无法下载怎么办? 微信账号忘记密码上面有钱怎么办 蘑菇街账号忘记了里面有钱怎么办 手机注册的百度云帐号换号怎么办 网易云音乐sd卡写入失败怎么办? 玩客云涌u盘满了怎么办 手机安装杜比音效失败死机该怎么办 网易云音乐下载额度用完了怎么办 苹果手机付费app连续扣费怎么办 oppoO粉卡的流量用没了怎么办 qq邮箱里的文件过期了怎么办 163邮箱里的文件过期了怎么办 做人事的给员工漏交社保了怎么办 公司漏交了员工一个月的社保怎么办