`
lukew
  • 浏览: 51826 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

URLEncoding

阅读更多
URLEncoding是用于解决链接字符串中包含中文字符的一种转换编码。各种编程环境下几乎带有它的库函数。

不过,J2ME除外。

好在JAVA的源代码中带有这个类,我们把它拷贝到J2ME环境下编译到我们的应用当中就可以了。

该文件位于JDK的目录下src.zip文件中,名叫URLEncoder.java。

但是,这个文件还需要做很多修改才能使用在J2ME环境中。

先警告大家,有几个真机(其中一个就是索爱的,好像是k500c),不管输入什么样的Encodeing都会出错,甚至是“UTF-8”。所以我一怒之下 去除了Encodeing参数。(这可是在实际应用中得出的结论,不去掉的话可以在大部分情况下正常使用,但是,现实总是有点缺陷)

修改后的代码如下,大家请放心使用。如果有兴趣,可以比较两个代码,看看我改动了什么地方。


<!---->import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
public class HURLEncoder {
 
 
private static boolean[] dontNeedEncoding;
 
 
static {
  dontNeedEncoding 
= new boolean[256];
 
  
for (int i = 0; i < 256; i++) {
   
boolean b = ((i >= ‘0′) && (i <= ‘9′))
     
|| ((i >= ‘A’) && (i <= ‘Z’)) || ((i >= ‘a’) && (i <= ‘z’));
 
   dontNeedEncoding[i] 
= b;
  }
 
  dontNeedEncoding[’ ‘] 
= true;
  dontNeedEncoding[’
-'] = true;
  dontNeedEncoding[’_'] = true;
  dontNeedEncoding[’.'] = true;
  dontNeedEncoding[’*'] = true;
 }
 
 
public static String encode(String s) {
 
  
boolean wroteUnencodedChar = false;
 
  StringBuffer writer 
= new StringBuffer();
 
  StringBuffer out 
= new StringBuffer(s.length());
 
  
for (int i = 0; i < s.length(); i++) {
   
char c = s.charAt(i);
 
   
if ((c < 256&& dontNeedEncoding[c]) {
    
if (c == ‘ ‘) {
     c 
= ‘+’;
    }
 
    out.append((
char) c);
    wroteUnencodedChar 
= true;
   } 
else {
    
try {
     
if (wroteUnencodedChar) {
      writer 
= new StringBuffer();
      wroteUnencodedChar 
= false;
     }
 
     writer.append(c);
 
     
if (c >= 0xD800 && c <= 0xDBFF) {
      
if ((i + 1< s.length()) {
       
int d = (int) (s.charAt(i + 1));
 
       
if (d >= 0xDC00 && d <= 0xDFFF) {
        writer.append(d);
        i
++;
       }
      }
     }
 
    } 
catch (Exception e) {
     writer 
= new StringBuffer();
     
continue;
    }
 
    String str 
= writer.toString();
 
    ByteArrayOutputStream baos 
= new ByteArrayOutputStream();
    DataOutputStream dos 
= new DataOutputStream(baos);
    
try {
     dos.writeUTF(str);
     dos.flush();
    } 
catch (Exception e) {
     e.printStackTrace();
    }
 
    
byte[] temp = baos.toByteArray();
    
byte[] ba = new byte[temp.length - 2];
    
for (int ix = 0; ix < ba.length; ix++) {
     ba[ix] 
= temp[ix + 2];
    }
 
    
for (int j = 0; j < ba.length; j++) {
     out.append(’
%');
 
     
char ch = forDigit((ba[j] >> 4& 0xF16);
     out.append(ch);
 
     ch 
= forDigit(ba[j] & 0xF16);
     out.append(ch);
    }
 
    writer 
= new StringBuffer();
    
try {
     dos.close();
     baos.close();
    } 
catch (Exception e) {
     e.printStackTrace();
    }
   }
  }
 
  
return out.toString();
 }
 
 
private static char forDigit(int digit, int radix) {
  
if ((digit >= radix) || (digit < 0)) {
   
return ‘0′;
  }
  
if (digit < 10) {
   
return (char) (’0′ + digit);
  }
  
return (char) (’A’ + digit - 10);
 }


分享到:
评论

相关推荐

    MD5算法,URLEncoding,Base64编码,AES,DES,DESede,RSA加密解密工具类和使用实例

    本话题主要涉及了MD5算法、URLEncoding、Base64编码以及几种对称和非对称加密算法AES、DES、DESede和RSA的工具类与使用实例。接下来,我们将深入探讨这些知识点。 1. **MD5算法**:MD5(Message-Digest Algorithm 5...

    asp下实现UrlEncoding转换编码的代码

    在ASP(Active Server Pages)中,UrlEncoding是一个关键的编程技术,主要用于处理URL中的特殊字符。这是因为URL(统一资源定位符)中某些字符在传输过程中可能会引起解析问题,比如空格通常会被转换为加号(+)或者...

    详解XMLHTTP控件的应用

    以上代码中的`URLEncoding`函数实现了这一功能,确保了特殊字符能够被正确传输。 2. **创建XMLHTTP对象**: `CreateObject("Microsoft.XMLHTTP")`这行代码用于创建XMLHTTP对象,它是所有后续操作的基础。 3. **设置...

    jsp页面显示中文乱码解决.pdf

    get 方式传值乱码是由于浏览器根据页面的 charset 编码方式对传值进行编码,然后提交至服务器交给 Tomcat,Tomcat 对这些信息进行解码时,采用的解码方式是由 server.xml 文件中的 URLEncoding 设置决定的。...

    基于JFinal的开源博客系统JFinal_Blog2.0版本

    4、解决Linux中tomcat容器乱码问题(URLEncoding="UTF-8"); 二、开源地址: 1、OSC介绍:http://www.oschina.net/p/jfinal_blog 2、GIT版本:http://git.oschina.net/jianggege/jfinal_91zcm 3、Github地址:...

    结果乱码的各种函数

    Private Function URLEncoding(vstrIn) ``` #### 实现原理: - 遍历输入字符串的每个字符。 - 对非ASCII字符进行十六进制编码。 - 将空格替换为“%20”。 #### 示例代码: ```vb Function URLEncoding(vstrIn) ...

    Ajax 中文乱码问题

    在上述代码中,`URLEncoding`函数负责将中文字符转换为URL编码格式。这样,无论服务器采用何种编码方式,都能够正确解析这些字符。 ##### 3.2 正确显示中文内容 对于接收服务器响应时出现的中文乱码问题,可以通过...

    基于JFinal的开源博客系统JFinal_Blog2.0版本.zip

    4、解决Linux中tomcat容器乱码问题(URLEncoding="UTF-8"); 二、开源地址: 1、OSC介绍:http://www.oschina.net/p/jfinal_blog 2、GIT版本:http://git.oschina.net/jianggege/jfinal_91zcm 3、Github地址:...

    ASP中实现的URLEncode、URLDecode自定义函数__1.docx

    Private Function URLEncoding(vstrIn) strReturn = "" For i = 1 To Len(vstrIn) ThisChr = Mid(vStrIn, i, 1) If Abs(Asc(ThisChr)) &gt; &HFF Then innerCode = Asc(ThisChr) If innerCode &gt; 0 Then ...

    jsp中文乱码问题解决

    解决方法是修改Tomcat的server.xml文件,添加URLEncoding=”utf-8”参数,以指定Tomcat的编码方式为UTF-8。例如:“8080” protocol=“HTTP/1.1” maxThreads=“150”connnectionTimeout=“20000” redirectPort=...

    C++转UTF8编码.txt

    接下来的`urlEncoding`函数是核心部分,它接受一个`wxString`类型的参数`sIn`,并返回一个新的`wxString`对象,该对象包含了原字符串按照UTF-8编码格式进行URL编码的结果。函数内部遍历了输入字符串的每一个字符,...

    alipay即时到账交易接口使用文档

    签名过程中,商户需要注意字符集与_input_charset保持一致,并使用参数的原始值而非经过urlencoding之后的值。 在安全签名方面,商户需要遵循特定的规则来确保交易安全。例如,如果请求参数列表中有可空参数,一旦...

    Go(golang)ECB模式的加密和填充。.zip

    base64Decoded, err := base64.URLEncoding.DecodeString(ciphertext) if err != nil { return "", err } block, err := aes.NewCipher(key) if err != nil { return "", err } if len(base64Decoded)%...

    Jsp和Servlet中文乱码问题

    根据提供的部分内容,可以看到对Tomcat服务器的`server.xml`文件进行了修改,添加了`URLEncoding`属性来指定URL的编码格式。例如,将`...

    Javascript 实用小技巧

    文章提供了一个URLEncoding函数用于对字符串进行编码。该函数遍历字符串中的每个字符,如果字符的ASCII码小于256,则直接拼接到结果字符串中;如果大于或等于256,则要进行相应的转换,将字符转换成两个百分号加上...

    sql数据库使用方法

    - 其中`URLEncoding`属性设置为`GBK`,表示Tomcat将以GBK编码处理URL中的参数。这对于处理中文字符非常重要。 #### 6. 访问Web应用 部署了Web应用之后,可以通过浏览器访问特定的URL来使用该应用。 - 示例URL:`...

    Asp.net中的页面乱码的问题

    filename=" + HttpUtility.UrlEncoding(filename.ToString())); ``` 这段代码的作用是在HTTP响应头中添加一个`Content-Disposition`头,其中包含了`filename`参数,用于指定下载的文件名。这里使用了`HttpUtility....

    ajax的处理中文乱码程序

    Function URLEncoding(vstrIn) strReturn = "" For i = 1 To Len(vstrIn) ThisChr = Mid(vStrIn, i, 1) If Abs(Asc(ThisChr)) strReturn = strReturn & ThisChr Else innerCode = Asc(ThisChr) If ...

    IOS应用源码之【框架】Google Toolbox for Mac.rar

    除此之外,GTM还提供了诸如`GTMRegex`(正则表达式支持)、`GTMNSString+URLEncoding`(URL编码解码)、`GTMNSData+zlib`(数据压缩与解压缩)等一系列实用工具,极大地提高了开发效率。 总的来说,Google Toolbox ...

Global site tag (gtag.js) - Google Analytics