精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>● Java>>JAVA编程>>中文问题>>Java中文问题(参考5)

主题:Java中文问题(参考5)
发信人: head()
整理人: hht(1999-03-11 11:11:55), 站内信件
From:
                                                                       13:04
Subject: [中文Q&A]JDK 1.1 可以解决JAVA不能输入中文的问题吗
?To: [email protected]

From:      [email protected] via BBS mail gateway
Subject:   [中文Q&A]JDK 1.1 可以解决JAVA不能输入中文的问题吗?
Date:      Tue Jun  9 13:04:33 1998
To:        To

发信人: "Alex Yu" <[email protected]>, 信区: Java
标  题: Re: JDK 1.1 可以解决JAVA不能输入中文的问题吗?
发信站: Rabbit System (Sat Dec 14 03:54:29 1996)
转信站: Evergreen!News.csie.ncu!spring!netnews.ntu!linux2.tpml!UUserv.Net.tw!ne

Roam Bot <test@test> wrote in article
<[email protected]>...
> 只能在CWIN95且使用IE3.0才可.
> 若在其它系统(甚至NT)或其他Blowser,则!@#$
> 那就只能自己爽而已,无法上Internet.
> 我想是CWIN95+IE的中文(Big5)内码跟其它都不一样.
> 真不知Big5标准内码有没有人在订定?
非关BIG5 标不标准吧...?
而且既然其他browser or OS 都不行让Java applet输入中文,
怎麽反而说可以这样做的平台不标准呢?

In M$ Java SDK document lang001.htm:
Java programs are written using the Unicode character set,
version 2.0. Information about this encoding may be found at:

http://www.unicode.org and ftp://unicode.org

Versions of Java prior to 1.1 used Unicode version 1.1.5
(see The Unicode Standard: Worldwide Character Encoding
(S1.2) and updates). See S20.5 for a discussion of the
differences between Unicode version 1.1.5 and Unicode
version 2.0.

在另一段, 提到:
Letters and digits may be drawn from the entire Unicode
character set, which supports most writing scripts in use
in the world today, including the large sets for Chinese,
Japanese, and Korean. This allows Java programmers to use
identifiers in their programs that are written in their
native languages.
(不过这跟能不能输入中文没关系)

在readChar() 的说明部份:
The general contract of readChar is that it reads two input
bytes and returns a char value. Let a be the first byte read
and b be the second byte. The value returned is:
(char)((a << 8) | (b & 0xff))

在readString() 的部份:
The general contract of readLine is that it reads successive
bytes, converting each byte separately into a character,
until it encounters a line terminator or end of file; the
characters read are then returned as a String.
* Note that because this method processes bytes, it does
not support input of the full Unicode character set.
(中略)
* Note that every character in this string will have a
value less than \u0100, that is, (char)256.

上面这两个method 的说明, 可以解释一点东西.
Java 的char 是Unicode char, 这是对於Java 处理亚洲语文
所应该有的最基本的概念.

这首先代表了, Java 是不直接支援Big5 encoding 的.

Java 写出来的程式只有叁种处理Big5 编码字串的方式:
1. byte by byte. (the case of readString() )
2. Java char by char, taking Big5 encoded string as
Unicode string. (The way of Netscape?)
3. Java char by char, with correct Big5<->Unicode
   conversion in input/output. (就是browser 要负责
   把DBCS char 转成Unicode char, 然後才丢给Java VM;
   the way of M$IE on Win95?)

第一种方式, 如果不自己处理Big5->Unicode, 在一个符合的
标准的Unicode 环境下是一定显示不出中文的, eg. Under
Windows NT. 可以显示出中文的话, 可以说是瞎猫碰上死耗子,
一定是输出端也不使用Unicode, 而直接把Java char 的high
byte strip 掉, 拿字串里各char 的low byte 组合成ansi
charset 的字串来显示. 不过不用担心会遗失资料就是了.

我的说法有很多是建立在猜测上的, 不过...
有一点可以确定的, 那就是...
Java 目前还没有官方的亚洲语文解决方案, 除非用Unicode.

--------------------------------------------------------
发信人: "Roam Bot" <test@test>, 信区: Java
标  题: Re: JDK 1.1 可以解决JAVA不能输入中文的问题吗?
发信站: Dept. of Computer & Information Science, NC (Sat Dec 14 09:03:19 1996)
转信站: Evergreen!News.csie.ncu!spring!aidebbs!UUserv.Net.tw!news.cis.nctu!usen

> > 真不知Big5标准内码有没有人在订定?
> 非关BIG5 标不标准吧...?
> Java 写出来的程式只有叁种处理Big5 编码字串的方式:
> 1. byte by byte. (the case of readString() )
> 2. Java char by char, taking Big5 encoded string as
>    Unicode string. (The way of Netscape?)
> 3. Java char by char, with correct Big5<->Unicode
>    conversion in input/output. (就是browser 要负责
>    把DBCS char 转成Unicode char, 然後才丢给Java VM;
>    the way of M$IE on Win95?)
> Java 目前还没有官方的亚洲语文解决方案, 除非用Unicode.

我指的内码就是BIG5的Unicode.
目前只有CWIN95+IE3使用所谓新的Big5 Unicode.
难不成叫所有的人都改用PC+CWIN95+IE3吧.
我目前的解决方法(在Chat 程式)是
1. 若是IE,则将Unicode 再转为Big5(反潮流?)
2. 若是Netscape,则利用Form输入,再丢入Applet.
----------------------------------------------------------------
发信人: "Alex Yu" <[email protected]>, 信区: Java
标  题: Re: JDK 1.1 可以解决JAVA不能输入中文的问题吗?
发信站: Rabbit System (Tue Dec 17 12:48:07 1996)
转信站: Evergreen!News.csie.ncu!news-peer.nctu!news.nctu!news.cc.nctu!news.cis.

Roam Bot <test@test> wrote in article
<[email protected]>...
> > Java 目前还没有官方的亚洲语文解决方案, 除非用Unicode.
> 我指的内码就是BIG5的Unicode.
> 目前只有CWIN95+IE3使用所谓新的Big5 Unicode.
> 难不成叫所有的人都改用PC+CWIN95+IE3吧.
Unicode 是Unicode, Big5 是Big5, 两种是不同的字元集(或者换个
字眼说, 就是内码), 没有什麽叫做Big5 的Unicode 的奇怪东西.

Big5 部份相容於IBM PC 相容机种上使用的字元集, 这是很多国外
程式都可以不经修改而能正常在使用Big5内码的中文环境下使用的根本.
假设所有字元集的文字都可以直接不经转换就显示在另一个字元集下
是一种危险的想法, 因为不是每个字元集都存在编码位置一样而且意义
一样的字, 一个明显而可见的例子就是DOS 下的Big5内码中文系统下的
边框冲码问题.

Unicode 跟现有存在的单位元组/双位元组字元集都不存在可以直接
涵盖的关系, 只能透过转码的方式在不同字元集间互转. 所以对使用
Unicode 的程式, 只存在输出入系统是否能处理不同字元集的输出入
文字并作适当的字元集转换, 或者该程式本身能处理不同字元集间的
转换再行输出入文字资料.

WinNT 系统核心是以前者处理, 内部使用Unicode. 使用Unicode 的
应用程式可以直接输出入Unicode, 使用旧有SBCS/DBCS 字元集的程式
则会由系统先行将输出入结果转换字元集後再丢给应用程式.

Win95 系统核心是以後者处理, 应用程式可以使用Unicode, 但是即使
应用程式使用Unicode 处理输出入, 最後的输出入结果仍然是SBCS/DBCS
字元集的文字, 一个Unicode 的程式在繁体中文版的Win95 下透过系统的
textout() 输出的Unicode字串显示时, 使用者看到的会是Big5 内码的
字串.

简单的说, CWin95+M$IE 可以输入中文到Java applet, 应该是因为
内部使用Unicode 的M$IE 在CWin95 下可以正确收到Unicode 的输入
结果. 在WinNT 下用Big5 码的中文输入法要让使用Unicode 的M$IE
得到正常的Unicode 结果, 或者跑(对Unicode 缺乏完整支援的?)Netscape,
结果都应该是可预期的需要额外的处理手段的, 像是保持输入结果能在
处理过程中都不会被转换字元集, 不会被删掉任何一个字, 然後在输出
环境下也能以输入时使用的字元集显示该文字...

事情无论如何跟谁的Big5 or Unicode 标不标准无关, 那是完全两回事.
-----------------------------------------------------------------
发信人: "Roam Bot" <test@test>, 信区: Java
标  题: Re: JDK 1.1 可以解决JAVA不能输入中文的问题吗?
发信站: Dept. of Computer & Information Science, NC (Wed Dec 18 18:06:48 1996)
转信站: Evergreen!News.csie.ncu!news-peer.nctu!news.nctu!news.cc.nctu!news.cis.

没想到第一次post,就有人回,而且回那麽多

从使用者的观点而言,目前最大的冲击就是中文Unicode的改变(制订?),
而M$也积极想让它成为网路标准,我想这也是 IE3 出现後,大家常
看到乱码的原因. 未来也许会解决,但我只关心目前该怎麽办?
目前中文使用者大多数分为几类
1. 使用英文os(unix, mac,Ewin,..)外挂汉字输出入系统,这在国外,香港,
    大陆,甚至於台湾,都有很多人采用, 这些人大部分使用Netscape.
2. 使用CWIN+Netscape,输入可采外挂汉字,手写板输入,或用剪贴
3. 使用CWIN+IE3

而目前的事实则是输出入装置(含档案,银幕,网路,中文印字机..)都采用Big5
,而且是单位元传送,NS3.0与IE3.0又不支援JDK1.1,M$Java与SunJava对於 local
处理方式又不一样.

所以目前该怎麽办?是要用我上回post的土方法呢?
还是等所有的Browser在所有的系统都支援中文编码呢(里外都要)?
目前 M$ 在WIN系统中,中文 language pack 只支援html  内文( 还 是
Big5)  , 对於 Java ( 甚至於 Form )  都还未支援输出入.

Java Applet 就是要跨平台, 跨国家, 跨系统才好玩.

也许全面放弃 Big5,  改采用Unicode,  才是根本解决办法.
( 或者不要理会 M$与Unicode 公司, 让 Big5 就是中文 Unicode ?, why not!)

--
☆ 来源:.广州网易BBS站 bbs.nease.net.[FROM: 202.101.127.250]

[关闭][返回]