您的位置:首页 > 编程语言 > Java开发

Java语言的中文处理

2004-11-26 17:05 405 查看
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.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: