怎么样把中文转成%4e9a%%9a6c%%900a%这样的格式存储 怎么样把中文转成%4e9a%%9a6c%%900a%这样的格式存储到数据库中,然后读取出来后,再转成中文 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 顺便问问 这个是asic编码还是uncode? String str1 = URLEncoder.encode("中国", "UTF-8"); String str2 = URLDecoder.decode("%E4%B8%AD%E5%9B%BD", "UTF-8"); System.out.println(str1 + "<->" + str2); public static String encode(String src) { if (src == null) return null; char c; int length = src.length(); StringBuffer tmp = new StringBuffer(); for (int i= 0; i<length; i++) { c = src.charAt(i); if (c < 256) { tmp.append(c); } else { tmp.append("%"); if (c < 0x1000) tmp.append("0"); tmp.append(Integer.toString(c, 16)); tmp.append("%"); } } return tmp.toString(); } 错了, 除了多字节字符,至少还有个 '%' 也需要转义 public static String escape(String src) { if (src == null) return null; char c; int length = src.length(); StringBuffer tmp = new StringBuffer(); for (int i= 0; i<length; i++) { c = src.charAt(i); if (c<256 && c!='%') { tmp.append(c); } else { tmp.append("%"); if (c < 0x1000) tmp.append("0"); if (c < 0x100) tmp.append("0"); tmp.append(Integer.toString(c, 16)); tmp.append("%"); } } return tmp.toString(); } public static String decode(String src) { if (src == null) return null; StringBuffer sb = new StringBuffer(); Pattern p = Pattern.compile("(?i)%([\\da-f]+)%"); Matcher m = p.matcher(src); while(m.find()) { m.appendReplacement(sb, Character.toString((char)Integer.parseInt(m.group(1), 16))); } m.appendTail(sb); return sb.toString(); } 好像不是这样的 %4e9a% %9a6c% %900a%这样的 这个的编码顺序是%E4%B8%AD %E5%9B%BD 这个方法可以请问这个是asic编码的吧? public class Test5 { private final static char[] HEX = "0123456789abcdef".toCharArray(); public static void main(String[] args) { String str = "亚马逊"; System.out.println(escape(str)); } public static String escape(String str) { if(str == null || str.length() == 0) { return str; } char[] chs = str.toCharArray(); char[] data = new char[chs.length * 6]; for(int i = 0, offset = 0; i < chs.length; i++) { data[offset++] = '%'; for(int j = 0, k = Character.SIZE / 4; j < k; j++) { data[offset++] = HEX[chs[i] >> ((k - j - 1) * 4) & 0xf]; } data[offset++] = '%'; } return new String(data); }} 这个也不错。很多网址中就是这样转码的。下面有介绍这个知识点的。http://hi.baidu.com/bug_%B3%E6/blog/item/d4984a828f0360a70df4d202.html 老大,那个网站上用的是就是 2 所的 URL 编码,在 Java 中可以使用 URLEncoder.encode 进行编码,在 JavaScript 中可以使用 encodeURI 函数进行编码。 JavaScript 中与 java 里 URLEncoder.encode(str, "UTF-8")相对应的方法应该是 encodeURIComponent(str)encodeURI(str) 对 ":/?&#" 这样的字符仍不编码 java里怎么执行DOS下的这句代码?? JFrame中的一些小问题!求大虾们帮帮忙啊 Jtable更新问题.高手请进 有关set jre的精简问题 一个简单的问题 大家都用JBuilder做什么啊? @@@@@众人齐动手,美化我论坛------有个问题想跟大家交流@@@@@ 快被这个异常弄疯了,求大神指点迷津 请教一道简单的关于String字符串引用的问题。。。。。。 遇到的JAVA问题 大家来看看 顺便祝大家5 1节快乐 \r\n 写入txt出现乱码
String str2 = URLDecoder.decode("%E4%B8%AD%E5%9B%BD", "UTF-8");
System.out.println(str1 + "<->" + str2);
if (src == null) return null;
char c;
int length = src.length();
StringBuffer tmp = new StringBuffer();
for (int i= 0; i<length; i++) {
c = src.charAt(i);
if (c < 256) {
tmp.append(c);
} else {
tmp.append("%");
if (c < 0x1000) tmp.append("0");
tmp.append(Integer.toString(c, 16));
tmp.append("%");
}
}
return tmp.toString();
}
if (src == null) return null;
char c;
int length = src.length();
StringBuffer tmp = new StringBuffer();
for (int i= 0; i<length; i++) {
c = src.charAt(i);
if (c<256 && c!='%') {
tmp.append(c);
} else {
tmp.append("%");
if (c < 0x1000) tmp.append("0");
if (c < 0x100) tmp.append("0");
tmp.append(Integer.toString(c, 16));
tmp.append("%");
}
}
return tmp.toString();
}
if (src == null) return null;
StringBuffer sb = new StringBuffer();
Pattern p = Pattern.compile("(?i)%([\\da-f]+)%");
Matcher m = p.matcher(src);
while(m.find()) {
m.appendReplacement(sb, Character.toString((char)Integer.parseInt(m.group(1), 16)));
}
m.appendTail(sb);
return sb.toString();
}
%4e9a% %9a6c% %900a%
这样的 这个的编码顺序是
%E4%B8%AD %E5%9B%BD
请问这个是asic编码的吧?
private final static char[] HEX = "0123456789abcdef".toCharArray(); public static void main(String[] args) {
String str = "亚马逊";
System.out.println(escape(str));
}
public static String escape(String str) {
if(str == null || str.length() == 0) {
return str;
}
char[] chs = str.toCharArray();
char[] data = new char[chs.length * 6];
for(int i = 0, offset = 0; i < chs.length; i++) {
data[offset++] = '%';
for(int j = 0, k = Character.SIZE / 4; j < k; j++) {
data[offset++] = HEX[chs[i] >> ((k - j - 1) * 4) & 0xf];
}
data[offset++] = '%';
}
return new String(data);
}
}
这个也不错。很多网址中就是这样转码的。
下面有介绍这个知识点的。
http://hi.baidu.com/bug_%B3%E6/blog/item/d4984a828f0360a70df4d202.html
在 JavaScript 中可以使用 encodeURI 函数进行编码。
JavaScript 中
与 java 里 URLEncoder.encode(str, "UTF-8")
相对应的方法应该是 encodeURIComponent(str)
encodeURI(str) 对 ":/?&#" 这样的字符仍不编码