|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
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里有这些工具吗?又要简单多少?我没有用过这两门语言,我估计在这些语言力没有很统一的这种标准,或者根本就没有提供。 |
|