当前位置导航:炫浪网>>网络学院>>网页制作>>JSP教程

Java语言的中文处理

Java 的 基 本 的char 类 型 被 定 义 成 无 符 号 的16 位, 它 是Java 中 唯 一 的 一 个 无 符 号 类 型。 使 用16 位 表 达 字 符 的 主 要 原 因 是 要 让Java 能 够 支 持 任 何Unicode 字 符, 因 此 而 使 得Java 适 用 于 描 述 或 显 示 任 何 被Unicode 支 持 的 语 言, 可 移 植 性 也 就 会 更 好。 但 是, 能 够 支 持 某 种 语 言 的 字 符 串 显 示, 和 能 够 正 确 打 印 某 种 语 言 的 字 符 串, 常 常 是 两 个 不 同 的 问 题。 由 于Oak(Java 最 初 的 代 号) 开 发 组 的 主 要 环 境 是Unix 系 统 和 某 些 源 于Unix 的 系 统, 所 以 对 开 发 人 员 来 说, 最 为 方 便 实 用 的 字 符 集 是ISO Latin-1。 相 应 地, 这 一 开 发 组 就 带 有Unix 遗 传 性, 也 就 导 致 了Java 的I/O 系 统 在 很 大 程 度 上 以Unix 的 流 概 念 为 模 型, 而 在Unix 系 统 中, 每 一 种I/O 设 备 都 是 用 一 串8 比 特 的 流 来 表 示。 这 种 在I/O 系 统 方 面 取 模 于Unix 的 做 法, 使 得Java 语 言 拥 有16 位 的Java 字 符, 而 却 只 有8 位 的 输 入 设 备, 这 样 就 给Java 带 来 了 些 不 足。 因 此 在 任 何 一 处Java 字 符 串 按8 位 来 读 入 或 写 出 的 地 方, 都 得 有 一 小 段 程 序 代 码, 被 称 为" 劈(hack)", 来 将8 位 的 字 符 映 射 成 为16 位Unicode, 或 将16 位 的Unicode 劈 成8 位 字 符。



例子:

下面程序代码:说名利用InputStringReader类,从原始的byte数据来转换成既定的字符集



import java.io.*;



public class rfnew

{



public static void main(String args[])

{



FileInputStream fis;



InputStreamReader isr;



char ch;



try

{



fis = new FileInputStream("gq.txt");



isr = new InputStreamReader(fis);



while (true)

{



ch = (char) isr.read();



System.out.print(ch);



System.out.flush();



if (ch == '\n') break;



}



fis.close();



}

catch (Exception e) { }



System.exit(0);



}



}



InputStringReader类的说明:

An InputStreamReader is a bridge from byte streams to character streams: It reads bytes and decodes them into characters using a specified charset. The charset that it uses may be specified by name or may be given explicitly, or the platform's default charset may be accepted.



相关内容
赞助商链接