|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
什么时候上述的三种开发工具能和三为一,什么时候java的竞争力才更强,才有机会拉拢更多的程序员投入到对java的开发上,因为到时的开发工具将会比.net的更简单。还有一点也很关键,什么时候java推出的jsf能成为真正意义上的标准。山西省收集办理中央任军
----择要:本文次要会商了Java言语中字符的特别表达情势,特别是中文信息的表达处置,论述了字符处置的关头是要将十六位Unicode字符,转换为当地上层平台,也就是运转Java假造处置机的平台可以了解的字符情势。
----关头词:Java、字符、8位、16位、Unicode字符集
----Java是一种编程言语、一个运转体系、一套开辟工具和一个使用程序编程界面(API)。Java创建在C++的熟习、有效的特性之上,而作废了C++的庞大的、伤害的和过剩的元素。它是一个更平安、更复杂、更简单利用的言语。
1、Java的字符表达
----Java言语和C言语对字符举行了互不不异的形貌,Java利用16位的Unicode字符集(该尺度形貌了很多言语的各类分歧字符),因而Java字符是一个16位的无标记整数,字符变量用来寄存单个字符,而不是完全的字符串。
----一个字符(character),就是单个字母(letter),很多字母组成一个单词,一组单词构成句子,以此类推。可是关于含有诸如中文信息的字符,就不是那末复杂了。
----Java的基础的char范例被界说成无标记的16位,它是Java中独一的一个无标记范例。利用16位表达字符的次要缘故原由是要让Java可以撑持任何Unicode字符,因而而使得Java合用于形貌或显现任何被Unicode撑持的言语,可移植性也就会更好。可是,可以撑持某种言语的字符串显现,和可以准确打印某种言语的字符串,经常是两个分歧的成绩。因为Oak(Java最后的代号)开辟组的次要情况是Unix体系和某些源于Unix的体系,以是对开辟职员来讲,最为便利有用的字符集是ISOLatin-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位字符。
2、成绩及办理
----我们要完成从一个文件读失信息,特别是读取含有中文信息的文件,并将读取到的信息显现在屏幕上,一样平常我们利用FileInputStream函数翻开文件、readChar函数读进字符。以下:
importjava.io.*;
publicclassrf{
publicstaticvoidmain(Stringargs[]){
FileInputStreamfis;
DataInputStreamdis;
charc;
try{
fis=newFileInputStream("xinxi.txt");
dis=newDataInputStream(fis);
while(true){
c=dis.readChar();
System.out.print(c);
System.out.flush();
if(c==
)break;
}
fis.close();
}catch(Exceptione){}
System.exit(0);
}
}
----可是现实上,运转这一程序,所能失掉的输入了局是一堆无用的乱码。不克不及准确输入xinxi.txt文件内容,其缘故原由是readChar函数读进的是16位的Unicode字符,而System.out.print却将其看成八位的ISOlatin-1字符输入。
----Java1.1版本引进了一套全新的Readers和Writers接口来处置字符。我们能够使用InputStreamReader类而不是DataInputStream来处置文件。修正下面的程序以下:
importjava.io.*;
publicclassrf{
publicstaticvoidmain(Stringargs[]){
FileInputStreamfis;
InputStreamReaderirs;
charch;
try{
fis=newFileInputStream("xinxi.txt");
irs=newInputStreamReader(fis);
while(true){
ch=(char)irs.read();
System.out.print(c);
System.out.flush();
if(ch==
)break;
}
fis.close();
}catch(Exceptione){}
System.exit(0);
}
}
----如许才干准确输入xinxi.txt中的文本(特别是中文信息)。别的,当xinxi.txt文件来自分歧的呆板,即来自分歧操纵平台(或汉字内码分歧)的呆板,好比:文件来自客户端(客户端上传文件给服务器),而读取文中信息的操纵由服务器端实行。假如用下面的程序来完成这一功效,就有大概仍旧不克不及失掉准确的了局。其缘故原由就是输出编码转换失利,我们还必要举行以下的修改:
......
intc1;
intj=0;
StringBufferstr=newStringBuffer();
charlll[][]=newchar[20][500];
Stringll="";
try{
fis=newFileInputStream("fname.txt");
irs=newInputStreamReader(fis);
c1=irs.read(lll[1],0,50);
while(lll[1][j]!=){
str.append(lll[1][j]);
j=j+1;
}
ll=str.toString();
System.out.println(ll);
}catch(IOExceptione){
System.out.println(e.toString());}
......
----如许,输入的了局就准确了。固然,下面的程序是不完全的,只是申明了一下办理的办法。
----总之,Java言语中字符处置,特别是中文信息的处置,对照特别。在Java中,字符处置的关头是要将十六位Unicode字符,转换为当地上层平台也就是运转Java假造处置机的平台可以了解的字符情势。
关于第二点:俺问问你,如果是企业级项目的话,诸如RMI,EJB,等一些关键技术,这些难道都不需要学么?如果光是使用jsp,servlet,javabean的话。 |
|