当前位置:七道奇文章资讯编程技术Java编程
日期:2011-03-22 16:13:00  来源:本站整理

Merlin的魔力: 字符集[Java编程]

赞助商链接



  本文“Merlin的魔力: 字符集[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

用数字表示

不怕明说,其实计算机只理解数字.但下面这一点大概就没那么明显 ― 因为计算机只理解数字,所以它们需求用某种情势把数字值映射为呼应的字符,这样才能显示文本.就是这些映射(或 字符集)才使得计算机可以理解文本.比方,就为了这种映射,早期的台式机利用了 ASCII.当一台利用 ASCII 的计算机存储数字 72、101、108 和 112 时,它便知道要显示“Help”这个单词,因为在 ASCII 中,数字 72 是 H 的值、101 是 e 的值、108 是 l 的值、112 是 p 的值.但假如这台计算机是早期的 IBM 大型机(它利用 EBCDIC 而不是 ASCII),“Help”这个单词将用数字 200、133、147 和 151 代表.

字符集底子知识

在向 Java 语言迁移时, java.nio.charset 包中有三个类帮忙举行这种映射: Charset 、 CharsetEncoder 和 CharsetDecoder .这些类彼此配合,这样您便可以先采取一种映射,然后将其转换为另一种映射.在从另一种映射转换为 Java 映射(Unicode)时,您可以利用解码器(decoder).然后,假如您需求从 Java 映射(Unicode)再转换为另一种映射(或转换回本来那种映射)时,您可以利用编码器(encoder).您无法用 java.nio.charset 包在两种非 Unicode 格局之间直接转换,但您可以通过一种中间的 Unicode 格局在两种非 Unicode 格局间举行转换.

在得到一个解码器或编码器之前,您需求得到用于特定映射的 Charset .比方,US-ASCII 是用于 7 位 ASCII 字符集的映射的名称.您只需象下面这样把该名称传送到 Charset 的 forName() 办法中便可:

Charset charset =
  Charset.forName("US-ASCII");

一旦有了 Charset ,只需按以下所示恳求 CharsetDecoder 和 CharsetEncoder :

CharsetDecoder decoder =
  charset.newDecoder();
CharsetEncoder encoder =
  charset.newEncoder();

有理解码器和编码器后,您便可以在差别的字符集之间举行转换了,以下所示:

ByteBuffer bytes = ...;
  CharBuffer chars = decoder.decode(bytes);
  bytes = encoder.encode(chars);

当然,假如不肯定哪些字符集可用,您需求用下面的语句来询问:

SortedMap map =
  Charset.availableCharsets();

然后您将利用特定的解码器把外部字节转换为内部字符.然后,假如需求把数据发送到 Java 代码外,您将利用编码器把内部字符转换为外部字节.至于哪些特定的字符集可用,您的运行时将肯定整个字符集.但每个 Java 编程实现都必须支持下列编码:

US-ASCII:7 位 ASCII

ISO-8859-1:ISO 拉丁字母

UTF-8:8 位 UCS 转换格局

UTF-16BE:16 位 UCS 转换格局,大尾数法字节次序

UTF-16LE:16 位 UCS 转换格局,小尾数法字节次序

UTF-16:16 位 UCS 转换格局,用标志(marker)辨认的字节次序

然后,差别的平台大概支持特定于该平台的额外字符集(比方,在 Windows 平台上,您会发现它支持 Windows-1252 字符集).假如您需求支持其他的字符集,您可以成立自己的字符集.请参阅 java.nio.charset.spi 包中的 CharsetProvider API.


  以上是“Merlin的魔力: 字符集[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • Merlin的魔力: SpringLayout管理器
  • Merlin的魔力: Merlin的新I/O缓冲区的输入和输出
  • <b>Merlin的魔力: Java联网加强技术</b>
  • Merlin的魔力: 操练无缺掌握图形显示
  • Merlin的魔力: 格局化数值和钱币
  • Merlin的魔力: 动态事件监听器代理
  • Merlin的魔力: 长期长期性
  • Merlin的魔力: Swing中的声音
  • Merlin的魔力: Swing 的新JFormattedTextField组件
  • <b>Merlin的魔力: J2SE 1.4.2供应两种新的外观筹划</b>
  • Merlin的魔力: 核心,核心,还是核心
  • Merlin的魔力: 字符集
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .