问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

java实现js的中一样的函数方法

发布网友 发布时间:2022-05-12 21:30

我来回答

1个回答

热心网友 时间:2022-04-24 19:48

package know.t5;
public class UrlEncodeWithoutASCII {
 public static String encode(String input)
    {
        StringBuilder sb = new StringBuilder(input.length() + 16);
        appendEncoded(sb, input);
        return sb.toString();
    }
    public static StringBuilder appendEncoded(StringBuilder sb, String input)
    {
        int safe[] = SAFE_ASCII;
        int i = 0;
        int c;
        for(int len = input.length(); i < len; i += Character.charCount(c))
        {
            c = input.codePointAt(i);
            if(c <= 127)
            {
                if(safe[c] != 0)
                    sb.append((char)c);
                else
                    appendSingleByteEncoded(sb, c);
            } else
            {
                appendMultiByteEncoded(sb, c);
            }
        }
        return sb;
    }
    private static final void appendSingleByteEncoded(StringBuilder sb, int value)
    {
     sb.append('%');
        sb.append(HEX[value >> 4]);
        sb.append(HEX[value & 15]);
    }
    private static final void appendMultiByteEncoded(StringBuilder sb, int value)
    {
        if(value < 2048)
        {
            appendSingleByteEncoded(sb, 192 | value >> 6);
            appendSingleByteEncoded(sb, 128 | value & 63);
        } else
        if(value < 65536)
        {
            appendSingleByteEncoded(sb, 224 | value >> 12);
            appendSingleByteEncoded(sb, 128 | value >> 6 & 63);
            appendSingleByteEncoded(sb, 128 | value & 63);
        } else
        {
            appendSingleByteEncoded(sb, 240 | value >> 18);
            appendSingleByteEncoded(sb, 128 | value >> 12 & 63);
            appendSingleByteEncoded(sb, 128 | value >> 6 & 63);
            appendSingleByteEncoded(sb, 128 | value & 63);
        }
    }
    private static final int SAFE_ASCII[];
    private static final char HEX[] = "0123456789ABCDEF".toCharArray();
    static 
    {
        SAFE_ASCII = new int[128];
        for(int i = 97; i <= 122; i++)
            SAFE_ASCII[i] = 1;
        for(int i = 65; i <= 90; i++)
            SAFE_ASCII[i] = 1;
        for(int i = 39; i <= 57; i++){
         if(i==43||i==44||i==47)
          continue;
         SAFE_ASCII[i] = 1;
        }
        SAFE_ASCII[33] = 1;
        SAFE_ASCII[95] = 1;
        SAFE_ASCII[126] = 1;
    }
}

encodeURIComponent函数可以用上面的类encode方法代替,unescape可以用任意URLDecoder代替,btoa可以用任意Base64工具代替(参数为byte[]时需将字符串按utf8编码),这个方案你可以试试效果

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
王奇 这个名字好不好 城建税等计入什么科目 灭火器多久保养一次 灭火器保养周期是多久? 朋友在北京想开一家超市的,请问什么地方适合?还有前期要准备什么? 恐龙宝宝漫游记之我爱我家2内容提要 我爱我家艳红为什么离婚 Faudel演唱的法语歌曲mon pays 的中文歌词,哈哈哈哈,谁有 Shy'm的Le blues de toi 歌词意思 ...那个t后面省略了什么 还有,希望能帮我翻译一下以下的歌词_百度... 地下城堡2小米版安卓APK如何下载 手机优酷视频里下载的东西咋找不到呢? 谁知道这种音响音频输入线接口? 思科音响s 2850音频输入输出线怎么接 梦见自己拉埋汰屎了就是擦的不干净 手机qq信息提示音不生效 刚才在秋叶原逛街,好多人排队在干啥 必胜客早餐时间7点到10点半。但是又说必胜客10点开始营业到底怎么弄啊 鸟剑居酒屋:其实我还蛮疑问的,这家店为什么广州美食 求助一下熟悉广州的人,关于居酒屋? 银行贷款还不上,会坐牢吗 淘宝首页的导航栏是怎样做出的效果? 鼠标移动到字上面,后面就会有个方块效果? 欧米奇教班戟千层那些蛋糕吗? 为什么交易性金融资产的交易费用要划归投资收益 Vivo X21A,是x什么什么? OPPO R7 plus手机开不起机怎么办 oppor7电量是满的,但是一拔掉充电器就自动关机,怎么都开不了机,为什么 oppo r7有电,但是突然开不了机,怎么回事? 家里养的泥鳅不停地发出游动地水声为什么 小泥鳅游来游去不肯停下是什么原因? 天刚一亮泥鳅不停的游动是找吃的吗? 这个JS代码转成PHP该怎么写呀? 怎么修改代码里的手机号码? ie不支持windows.btoa,怎么转bsea64 java后台返回了一段hex数据,前端如何转化为图片? javascript是不是自带了base64加密或者解密函数? Uncaught DOMException: Failed to execute &#39;atob&#39; on &#39;Window&#39;: The string to b 一场sat要考多久 SAT考试一天能考完吗 sat多久出成绩 福建泉州:公积金贷款最高额度由60万元调整为80万元 SAT的考试成绩一般是在考试后多久出来? SAT考完多久出成绩 泉州公积金缴存申请材料 SAT考试一般提前多久报名? 魅族n2手机开不了机充电也没反应 魅族3充电玩着游戏,死机后开机不了,充电也没反应。 ...怎样使用格式刷将一段文字字体格式复制到另一段文字 河南省高考总分数是多少 河南省高考总分 河南2020高考多少分满分