BO:opendocument中lsS参数是中文的解决方法

web设计者面临的众多难题之一便是怎样处理不同操作系统间的差异性。这些差异性能引起URL方面的问题:例如,一些操作系统允许文件名中含有空格 符,有些又不允许。大多数操作系统不会认为文件名中含有符号“#”会有什么特殊含义;但是在一个URL中,符号“#”表示该文件名已经结束,后面会紧跟一 个fragment(部分)标识符。其他的特殊字符,非字母数字字符集,它们在URL或另一个操作系统上都有其特殊的含义,表述着相似的问题。为了解决这 些问题,我们在URL中使用的字符就必须是一个ASCII字符集的固定字集中的元素,具体如下:
1.大写字母A-Z
2.小写字母a-z
3.数字 0-9
4.标点符 - _ . ! ~ * ' (和 ,)
诸如字符: / & ? @ # ; $ + = 和 %也可以被使用,但是它们各有其特殊的用途,如果一个文件名包括了这些字符( / & ? @ # ; $ + = %),这些字符和所有其他字符就应该被编码。
编码过程非常简单,任何字符只要不是ASCII码数字,字母,或者前面提到的标点符,它们都将被转换成字节形式,每个字节都写成这种形式:一个“%”后面 跟着两位16进制的数值。空格是一个特殊情况,因为它们太平常了。它除了被编码成“%20”以外,还能编码为一个“+”。加号(+)本身被编码为%2B。 当/ # = & 和?作为名字的一部分来使用时,而不是作为URL部分之间的分隔符来使用时,它们都应该被编码。
因此当ULR中用到的的字符串或者某国文字不能被解析的时候,可以先将该字符串转码从而以URL编码,然后将转码后的字符串拼成URL再去使用。举例如下:


ASP中的用法:  

Server.URLEncode("内容" )   例:   <%   response.write Server.UrlEncode("内容" )   %> 





PHP中的用法:

urlencode("内容" );
  例:
  <?
  echo urlencode("内容" );
  ?>


JSP中的用法:

URLEncoder.encode("内容" );   <%   java.net.URLEncoder.encode("内容" , "UTF-8" );   %> 





例如可以先将某个中文串在jsp中这样处理:

<%@ page import="java.net.URLEncoder" %> <%@ page contentType="text/html;charset=GB2312" %> <% String strParameter="中文" ; strParameter=URLEncoder.encode(strParameter, "UTF-8" ); %>



 

再举一个Java openDocument的例子,:



String parameterName="产品名称" ; String enCodeParameterName=java.net.URLEncoder.encode(parameterName,"UTF-8" ); String parameterValue="福克斯汽车" ; String enCodeParameterValue=java.net.URLEncoder.encode(parameterValue,"UTF-8" ); String URLrequest = "http://" +appServerTomcatName+":8080/businessobjects/enterprise115/desktoplaunch/opendoc/ openDocument.jsp?token="+ token + " &lsS"+enCodeParameterName+" ="+enCodeParameterValue +"&iDocID=" +reportID; response.sendRedirect(URLrequest);



 

这个例子中所用到得参数名称和参数值均是经过URLEncoder转码的,从而防止了参数中有任何URL识别不了的字符。




你可能感兴趣的:(jsp,.net,PHP,asp.net,asp)