仓酷云

标题: JAVA网页编程之JBOSS中,中文成绩的完全办理 [打印本页]

作者: 柔情似水    时间: 2015-1-18 11:30
标题: JAVA网页编程之JBOSS中,中文成绩的完全办理
Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。Oracle收购Sun后Java前途未卜。办理|成绩|中文在从weblogic体系迁徙到jboss体系的时分,中文存储到数据库和XML文件呈现乱码。
我利用的是jboss3.0.8jetty版。
这是因为JBOSS中传送变量默许的ISO-8859-1的西笔墨符集。
我的办理举措是间接修正org.mortbay.jetty.jar。如许不必在程序中写良多转换历程。
起首到http://sourceforge.net/project/showfiles.php?group_id=7322,但凡叫xxxx-src.tar.gz的,都是源代码。我下载的是jetty-4.2.20RC0-all。
在../jboss-3.0.8/server/default/deploy/jbossweb.sar目次下,必要修正org.mortbay.jetty.jar中的orgmortbayhttp下的HttpRequest.java
上面是代码修正部分:
privatevoidextractParameters()
{
if(_paramsExtracted)
return;
_paramsExtracted=true;

if(_parameters==null)
_parameters=newMultiMap(16);

//Handlequerystring
Stringencoding=getCharacterEncoding();
if(encoding==null)
{
//Noencoding,sousetheexistingcharacters.
//anitamodify
//encoding=StringUtil.__ISO_8859_1;
encoding=StringUtil.__GBK;
_uri.putParametersTo(_parameters);
}
else
{
//Anencodinghasbeenset,soreencodequerystring.
Stringquery=_uri.getQuery();
if(query!=null)
{
try
{
//anitamodify
//byte[]qbytes=query.getBytes(StringUtil.__ISO_8859_1);
byte[]qbytes=query.getBytes(StringUtil.__GBK);
UrlEncoded.decodeTo(qbytes,0,qbytes.length,_parameters,encoding);
}
catch(Exceptione)
{
_uri.putParametersTo(_parameters);
}
}
}
在正文了“//anitamodify”的部分下,是关头的交换部分。
如今才做了一小部合作作哦,还要持续。在StringUtil下并没有__GBK办法,那我们就增加本人必要的这段代码。
到orgmortbayutil下,翻开StringUtil.java
我们必要做的是在源程序中增加以下代码:
//anitaaddforGBK
publicstaticString__GBK;
static
{
StringGBK=System.getProperty("GBK");
if(GBK!=null)
__GBK=GBK;
else
{
try{
newString(newbyte[]{(byte)20},"GBK");
__GBK="GBK";
}
catch(java.io.UnsupportedEncodingExceptione)
{
__GBK="GBK";
}
}
}
修正完,利用ant来实行编译打包,并交换失落JBOSS自带的org.mortbay.jetty.jar。

如许,中文存储成绩就办理了。假如某位老迈非要在地点中利用中文URL怎样办?让我持续……
到orgmortbayutil下,翻开URI.java找到约莫200行
publicvoidsetURI(Stringuri)
{
………………
………………
//completelaststate
switch(state)
{
case1:
………………
case2:
………………
case3:
_dirty=(mark==maxi);
_encodedPath=uri.substring(mark);
_path=java.net.URLDecoder.decode(_encodedPath,"UTF8");
//我用下面这句交换了上面这句,就能够了:)
//_path=decodePath(_encodedPath);
break;
case4:
………………
case5:
………………
}
}

一样编译打包,交换org.mortbay.jetty.jar。
如许假如你的路径中呈现中笔墨符也能够顺遂办理了。

上述办理办法在WIN2000和REDHATLINUX上均运转乐成。
别忘了,LINUX上要设置你的字符集
locate一下,假如还不是GBK字符集,那必要
exportLANG=zh_CN.GBK
exportLC_ALL=zh_CN.GBK


ruby里有这些工具吗?又要简单多少?我没有用过这两门语言,我估计在这些语言力没有很统一的这种标准,或者根本就没有提供。
作者: 灵魂腐蚀    时间: 2015-1-21 08:55
Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)
作者: 仓酷云    时间: 2015-1-24 15:20
象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。
作者: 蒙在股里    时间: 2015-2-1 18:16
是一种将安全性(Security)列为第一优先考虑的语言
作者: 老尸    时间: 2015-2-7 13:17
至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。
作者: 小妖女    时间: 2015-2-21 02:19
自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。
作者: 小魔女    时间: 2015-2-27 22:08
是一种为 Internet发展的计算机语言
作者: 若天明    时间: 2015-3-9 14:38
我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。
作者: 深爱那片海    时间: 2015-3-13 00:09
Java 编程语言的风格十分接近C、C++语言。
作者: 活着的死人    时间: 2015-3-20 06:49
是一种语言,用以产生「小应用程序(Applet(s))
作者: 若相依    时间: 2015-4-6 23:11
是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2