Uri 中文乱码问题
来源:互联网 发布:宏晶单片机 编辑:程序博客网 时间:2024/05/29 13:35
没事用了下Uri.fromFile(new File("/aaa/白板.pdf")).toString() 结果却不是我要的,2个中文字 白板竟然成了百分号了。。无语,百度下找了下列子
我自己偷懒了,我去,我反正是保存这个路径的,我直接在 路径前加了个 file:/// 完事,也不用Uri了。。
下边是搜到的文章:http://blog.chinaunix.net/uid-21144244-id-446383.html
不过感觉对我不没啥用,我是android的。。
public class EscapeUnescape {
public static String escape(String src) {
int i;
char j;
StringBuffer tmp = new StringBuffer();
tmp.ensureCapacity(src.length() * 6);
for (i = 0; i < src.length(); i++) {
j = src.charAt(i);
if (Character.isDigit(j) || Character.isLowerCase(j)
|| Character.isUpperCase(j))
tmp.append(j);
else if (j < 256) {
tmp.append("%");
if (j < 16)
tmp.append("0");
tmp.append(Integer.toString(j, 16));
} else {
tmp.append("%u");
tmp.append(Integer.toString(j, 16));
}
}
return tmp.toString();
}
public static String unescape(String src) {
StringBuffer tmp = new StringBuffer();
tmp.ensureCapacity(src.length());
int lastPos = 0, pos = 0;
char ch;
while (lastPos < src.length()) {
pos = src.indexOf("%", lastPos);
if (pos == lastPos) {
if (src.charAt(pos + 1) == 'u') {
ch = (char) Integer.parseInt(src
.substring(pos + 2, pos + 6), 16);
tmp.append(ch);
lastPos = pos + 6;
} else {
ch = (char) Integer.parseInt(src
.substring(pos + 1, pos + 3), 16);
tmp.append(ch);
lastPos = pos + 3;
}
} else {
if (pos == -1) {
tmp.append(src.substring(lastPos));
lastPos = src.length();
} else {
tmp.append(src.substring(lastPos, pos));
lastPos = pos;
}
}
}
return tmp.toString();
}
public static void main(String[] args) {
String tmp = "中文";
System.out.println("testing escape : " + tmp);
tmp = escape(tmp);
System.out.println(tmp);
System.out.println("testing unescape :" + tmp);
System.out.println(unescape("%u6211%u4eec"));
}
}
然后用整个对它进行解码
第二种情况:
前台JS 通过encodeURIComponent() 进行一个编码 然后 后台 就可以得到 正确的特殊字符 而不是空白 eg:
"/Graduation/viewjob.do?method=all&type="+type+"&like="+encodeURIComponent(document.all.like.value)+"&time="+document.all.time.value
第三中情况:
既有中文也有特殊字符
"/Graduation/viewjob.do?method=all&type="+type+"&like="+encodeURIComponent(escape(document.all.like.value))+"&time="+document.all.time.value
后台就利用上面的类 进行一次 unescape就可以拉
第四种情况:
因为AJAX 传递通过UTF-8 所以从JAVA代码出去的时候 设置response.setCharacter("UTF-8");前台就可以得到正确的中文 而不是 乱码拉
- Uri 中文乱码问题
- 解决URI中文乱码问题
- Android Uri带中文乱码问题
- URI参数中文乱码(针对IE6)
- CI URI 传递中文问题
- android中intent带Uri传输时中文的乱码问题
- dojo+JBoss7设置URI编码为UTF-8,解决传参中文乱码问题
- android中intent带Uri传输时中文的乱码问题
- [总结]使用ssh架构服务器uri中的中文乱码解决
- 中文乱码问题
- Webshpere 中文乱码问题。
- JPGraph中文乱码问题
- 中文乱码问题
- 中文乱码问题
- 解决中文乱码问题
- AJAX中文乱码问题
- JSF中文乱码问题
- JBuilder2005中文乱码问题
- [Android实例] android屏幕触摸事件机制
- As Easy As A+B
- zoj 3045 Random or Shuffle 狗模拟
- JSON 字符串 与 java 对象的转换
- MyEclipse打开struts-config xml文件 图形化不显示
- Uri 中文乱码问题
- for循环标签
- Linux 学习笔记---访问控制列表
- sourceInsight如何去除注释中文间的空格
- Spring-quartz整合
- android debug工具集(挺全的)
- win7下xampp配置memcache完整经历,没有坑
- Android----关于基础控件属性窗口无法手动设置的问题
- 第二章---SpringMVC----Spring入门