请问在JAVA中怎么把"只为这一句"编码成"%D6%BB%CE%AA%D5%E2%D2%BB%BE%E4"....[300分!!]

eww 2003-08-19 10:34:33
请问在JAVA中怎么把"只为这一句"编码成"%D6%BB%CE%AA%D5%E2%D2%BB%BE%E4"


这是标准的URL编码(这种格式将所有十六进制序列转换为 ASCII 字符)就是空格会骗码成"%20",a-z,0-9不会被编码.


...全文
158 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
eww 2003-08-19
  • 打赏
  • 举报
回复
public class URLEncoder
{
private static final char[] ENCODE_TABLE = new char[]{'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};

public static String encode(String s)
{
byte[] bytes = s.getBytes();
StringBuffer result = new StringBuffer();
for(int i=0; i<bytes.length; i++)
{
byte c = bytes[i];
if((c >= '0' && c <= '9') || (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z'))
result.append((char) c);
else
{
result.append('%');
result.append(ENCODE_TABLE[(c >> 4) & 0x0f]);
result.append(ENCODE_TABLE[c & 0x0f]);
}
}
return result.toString();
}
}

public static void main(String[] args)
{
System.out.println(URLEncoder.encode("只为这abcABC123一句"));
}





谢谢!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


果然是高人,给你80分..其他兄弟也有HOHO~
eww 2003-08-19
  • 打赏
  • 举报
回复
但是还有汉字怎么办????


我说的是URL的标准编码...

你在php中写<?php echo urlencode("你好"); ?>

试试,自已写的没法编中文........
cbhyk 2003-08-19
  • 打赏
  • 举报
回复
public class URLEncoder
{
private static final char[] ENCODE_TABLE = new char[]{'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};

public static String encode(String s)
{
byte[] bytes = s.getBytes();
StringBuffer result = new StringBuffer();
for(int i=0; i<bytes.length; i++)
{
byte c = bytes[i];
if((c >= '0' && c <= '9') || (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z'))
result.append((char) c);
else
{
result.append('%');
result.append(ENCODE_TABLE[(c >> 4) & 0x0f]);
result.append(ENCODE_TABLE[c & 0x0f]);
}
}
return result.toString();
}
}

public static void main(String[] args)
{
System.out.println(URLEncoder.encode("只为这abcABC123一句"));
}
lovelanzhi716 2003-08-19
  • 打赏
  • 举报
回复
up
cbhyk 2003-08-19
  • 打赏
  • 举报
回复
自已写一个
eww 2003-08-19
  • 打赏
  • 举报
回复
唉,我就知道没有人知道.....

我已以问了好几个BBS了。 以为这里有高手.
kjeny2002 2003-08-19
  • 打赏
  • 举报
回复
在jsp里编码有这么几种
response.encodeURL

response.encodeRedirectURL

response.encodeUrl(不建议使用)
gwsr 2003-08-19
  • 打赏
  • 举报
回复
关心此题!
eww 2003-08-19
  • 打赏
  • 举报
回复
java.net.URLEncoder.encode()


上面的方法根本不对,这个空格转的是+不是%20

我早试过了,在php中只要用urlencode()就行了。java中却没有,java.net.URLEncoder.encode()
编码根本不是标准的URL编码.


<!--你是不是要仿造google的形式作?-->
我当然不是了,标准的url编码在java中根本不用反编就能用out.print输出标准汉字....


Yanbin_Q 2003-08-19
  • 打赏
  • 举报
回复
java.net.URLEncoder.encode()
patrickjava 2003-08-19
  • 打赏
  • 举报
回复
good luck to you



any problem send "短信" to me
pzl686 2003-08-19
  • 打赏
  • 举报
回复
encode()
zhousm6 2003-08-19
  • 打赏
  • 举报
回复
看看http协议是怎么实现的,按照它那样做应该就没问题吧。
patrickjava 2003-08-19
  • 打赏
  • 举报
回复
httpServletResponse.encodeURL()

方法

应该是encode 转成字节流
patrickjava 2003-08-19
  • 打赏
  • 举报
回复
首先我将GOOGLE对查询的处理流程简单的说明如下:

客户端浏览器输入;
查询字符串按客户端系统编码方式(GBK)转换成字节流,并URL Encode后传给GOOGLE;
GOOLGE将输入的字符串URL Decode后,按照客户端的系统编码方式将这个字符串(字节串)解码成UniCode
查询过程,完全是基于UniCode的匹配过程,比如对于“中文”这2个字在简体繁体中文和日文里都有,因此无论是何种语言的页面包含这2个字的页面都能匹配上。
结果集输出:将查询结果集的内容(UNICODE)按客户端系统编码方式(GBK)“编码”成的字节流,返回给浏览器
patrickjava 2003-08-19
  • 打赏
  • 举报
回复
我觉得google在这方面作的很好!

==================================
你是不是要仿造google的形式作?
eww 2003-08-19
  • 打赏
  • 举报
回复
怎么最多只能给100分?
bonnyone 2003-08-19
  • 打赏
  • 举报
回复
小子,告诉你。高手是神龙见首不见尾的!!!

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧