精华区 [关闭][返回]

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

主题:Java中文问题(参考6)
发信人: head()
整理人: hht(1999-03-11 11:13:13), 站内信件
From:
                                                                       12:59
Subject: [中文Q&A]UNICODE与big5To: [email protected]

From:      [email protected] via BBS mail gateway
Subject:   [中文Q&A]UNICODE与big5
Date:      Tue Jun  9 12:59:47 1998
To:        To

发信人: [email protected] (贤哥), 信区: Java
标  题: UNICODE与big5
发信站: 台大计中椰林风情站 (Fri Mar 20 04:53:52 1998)
转信站: cis_nctu!news.cis.nctu!UUserv.Net.tw!news.csie.nctu!news.svdcc.fju!spr

最近在写处理中文的程式, 深深为unicode与big5所苦. 有些想法不知道是否正确, 请
大家指教!

        java内部的字元是采用16bit unicode, 所以在win95平台上, java程式读入
一个文字档(其中包含中文与英文)到inputstream, java会将档案中的每个byte转成
unicode来表示, 所以一个big5的中文字会变成两个unicode char. 等到要把所读入的
资料再写入另一个档案时, java会把每个unicode char转成single byte char(因为在
win95平台上), 於是两个档案是一样的. 由於unicode的'\u0000'到'\u00ff'正对应
single byte char, 所以我猜想当single byte 转unicode时是加上一个high byte,
unicode char 转single byte char时则是把high byte去掉.

        若是按照我以上的推论, 则以下的程式应该会得到结果为10. 不过在jdk1.1.5
所得到的结果是5, 而在visula age for java则是10. 不知道为什麽会这样?

public class CountLength{
        public static void main(String args[]){
                String s1 = "台大椰林站";
                System.out.println(s1.length());
        }
}

>==========================================================================<
发信人: [email protected] (寄居埔里ver. 1.2, 信区: Java
标 题: Re: UNICODE与big5
发信站: 暨大水沙连站 (Fri Mar 20 12:57:23 1998)
转信站: cis_nctu!news.cis.nctu!news.cs.nthu!news.tceb!ccnews.nchu!news.ncnu!wa

※ 引述《[email protected] (贤哥)》之铭言:
: 最近在写处理中文的程式, 深深为unicode与big5所苦. 有些想法不知道是否正确, 请
: 大家指教!
:         java内部的字元是采用16bit unicode, 所以在win95平台上, java程式读入
: 一个文字档(其中包含中文与英文)到inputstream, java会将档案中的每个byte转成
: unicode来表示, 所以一个big5的中文字会变成两个unicode char. 等到要把所读入的
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
这是不正确的....JDK1.1巳经修正这个问题了
一个中文字,在JDK1.1就是一个unicode
: 资料再写入另一个档案时, java会把每个unicode char转成single byte char(因为在
: win95平台上), 於是两个档案是一样的. 由於unicode的'\u0000'到'\u00ff'正对应
: single byte char, 所以我猜想当single byte 转unicode时是加上一个high byte,
: unicode char 转single byte char时则是把high byte去掉.
:         若是按照我以上的推论, 则以下的程式应该会得到结果为10. 不过在jdk1.1.5
: 所得到的结果是5, 而在visula age for java则是10. 不知道为什麽会这样?
: public class CountLength{
:         public static void main(String args[]){
:                 String s1 = "台大椰林站";
:                 System.out.println(s1.length());
:         }
: }
你的想法是错的,正确的是5个
正确的是JDK1.1.5,错的是VAJ...VAJ尚不支援internationlization,IBM
的网页应该有说吧

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

[关闭][返回]