Android和 java 提交参数转码问题
来源:互联网 发布:python问卷系统源码 编辑:程序博客网 时间:2024/06/05 23:46
1.解决Android、JAVA、ajax提交中文、URL中文参数传递后的乱码问题的解决办法
2.JAVA 中URL链接中文参数乱码的处理方法
3.JAVA URL中带有中文时的处理
在提交参数的时候,无论是Url中还是 Url后面提交的中文参数,怎么处理,调用以下方法就OK!
Java代码如下:
package com.gjob.common;public class URLtoUTF8 { //转换为%E4%BD%A0形式 public static String toUtf8String(String s) { StringBuffer sb = new StringBuffer(); for (int i = 0; i < s.length(); i++) { char c = s.charAt(i); if (c >= 0 && c <= 255) { sb.append(c); } else { byte[] b; try { b = String.valueOf(c).getBytes("utf-8"); } catch (Exception ex) { System.out.println(ex); b = new byte[0]; } for (int j = 0; j < b.length; j++) { int k = b[j]; if (k < 0) k += 256; sb.append("%" + Integer.toHexString(k).toUpperCase()); } } } return sb.toString(); } //将%E4%BD%A0转换为汉字 public static String unescape(String s) { StringBuffer sbuf = new StringBuffer(); int l = s.length(); int ch = -1; int b, sumb = 0; for (int i = 0, more = -1; i < l; i++) { /* Get next byte b from URL segment s */ switch (ch = s.charAt(i)) { case '%': ch = s.charAt(++i); int hb = (Character.isDigit((char) ch) ? ch - '0' : 10 + Character.toLowerCase((char) ch) - 'a') & 0xF; ch = s.charAt(++i); int lb = (Character.isDigit((char) ch) ? ch - '0' : 10 + Character.toLowerCase((char) ch) - 'a') & 0xF; b = (hb << 4) | lb; break; case '+': b = ' '; break; default: b = ch; } /* Decode byte b as UTF-8, sumb collects incomplete chars */ if ((b & 0xc0) == 0x80) { // 10xxxxxx (continuation byte) sumb = (sumb << 6) | (b & 0x3f); // Add 6 bits to sumb if (--more == 0) sbuf.append((char) sumb); // Add char to sbuf } else if ((b & 0x80) == 0x00) { // 0xxxxxxx (yields 7 bits) sbuf.append((char) b); // Store in sbuf } else if ((b & 0xe0) == 0xc0) { // 110xxxxx (yields 5 bits) sumb = b & 0x1f; more = 1; // Expect 1 more byte } else if ((b & 0xf0) == 0xe0) { // 1110xxxx (yields 4 bits) sumb = b & 0x0f; more = 2; // Expect 2 more bytes } else if ((b & 0xf8) == 0xf0) { // 11110xxx (yields 3 bits) sumb = b & 0x07; more = 3; // Expect 3 more bytes } else if ((b & 0xfc) == 0xf8) { // 111110xx (yields 2 bits) sumb = b & 0x03; more = 4; // Expect 4 more bytes } else /*if ((b & 0xfe) == 0xfc)*/{ // 1111110x (yields 1 bit) sumb = b & 0x01; more = 5; // Expect 5 more bytes } /* We don't test if the UTF-8 encoding is well-formed */ } return sbuf.toString(); } public static void main(String[] args){ System.out.println(URLtoUTF8.toUtf8String("你")); System.out.println(URLtoUTF8.unescape("%E4%BD%A0%20%E5%A5%BD")); }}
############
运行结果:
%E4%BD%A0
你 好
0 0
- Android和 java 提交参数转码问题
- java 、Android 提交参数转码问题
- java 、Android 提交参数转码问题
- java提交,参数乱码问题
- java提交,参数乱码问题
- js,java实现escape()和unescape()函数解决以给方式提交中中文参数问题
- Android 提交参数汇总
- ajax提交参数乱码问题
- 参数重复提交的问题
- post和get提交中文数据的转码问题
- Java中的参数传递问题和图解
- 常用上传组件提交参数的问题
- 通过url提交中文参数乱码问题
- jquery ajax提交,参数中文乱码问题
- 处理post提交后,参数可见问题
- js提交表单参数传递问题
- 解决Ajax提交参数丢失的问题
- 关于ajax提交中文参数乱码问题
- 查询字段在数据库哪个表里面
- EditText 横条显示
- LeetCode Triangle
- Hasen的linux设备驱动开发学习之旅--支持阻塞的设备驱动
- paxos学习笔记——三种角色行为过程
- Android和 java 提交参数转码问题
- android平台中,EventBus研究学习
- Thread 和 Runnable 区别 一分钟明白
- Java内存模型与多线程
- matlab的parfor循环
- Paypal支付(三)Express Checkout EC WebView快捷支付之改进版
- go练习:Web 爬虫
- Eclipse-----SVN相关操作
- 简明 Vim 练级攻略