从Cookie 中取出来对特殊字符的转换

别再为GEE注册发愁了!用谷歌Cloud Project,5分钟搞定谷歌地球引擎账户(保姆级图文) 本文提供2024最新版谷歌地球引擎(GEE)账户注册的保姆级教程,通过谷歌Cloud Project快速完成注册,5分钟极速通关。详细解析注册前的准备、分步图解流程、常见误区及解决方案,帮助用户避开90%的注册陷阱,直达GEE核心功能区。 阅读详情
    页面存入Cookie中的值含有特殊字符,但所传的值中包含一些特殊字符比如“:”,Cookie中是无法对特殊字符直接承载的,所以在存入Cookie时,将其转换为unicode编码:
document.cookie = key + "=" + escape(value);
但在action中如果直接取得,是无法将特殊字符的unicode编码转换为想要的,上网搜查相关资料,找到了用java编写的unicode编码的转换的工具类,工程中的Escape就是该工具类,在action中用
String code = Escape.unescape(cookies[i].getValue());

方法转换后就可以将unicode转为我想要的特殊字符。 

下面是Escape.java的源代码:

public class Escape
{
    private final static String[] hex = { "00", "01", "02", "03", "04", "05",
            "06", "07", "08", "09", "0A", "0B", "0C", "0D", "0E", "0F", "10",
            "11", "12", "13", "14", "15", "16", "17", "18", "19", "1A", "1B",
            "1C", "1D", "1E", "1F", "20", "21", "22", "23", "24", "25", "26",
            "27", "28", "29", "2A", "2B", "2C", "2D", "2E", "2F", "30", "31",
            "32", "33", "34", "35", "36", "37", "38", "39", "3A", "3B", "3C",
            "3D", "3E", "3F", "40", "41", "42", "43", "44", "45", "46", "47",
            "48", "49", "4A", "4B", "4C", "4D", "4E", "4F", "50", "51", "52",
            "53", "54", "55", "56", "57", "58", "59", "5A", "5B", "5C", "5D",
            "5E", "5F", "60", "61", "62", "63", "64", "65", "66", "67", "68",
            "69", "6A", "6B", "6C", "6D", "6E", "6F", "70", "71", "72", "73",
            "74", "75", "76", "77", "78", "79", "7A", "7B", "7C", "7D", "7E",
            "7F", "80", "81", "82", "83", "84", "85", "86", "87", "88", "89",
            "8A", "8B", "8C", "8D", "8E", "8F", "90", "91", "92", "93", "94",
            "95", "96", "97", "98", "99", "9A", "9B", "9C", "9D", "9E", "9F",
            "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "A8", "A9", "AA",
            "AB", "AC", "AD", "AE", "AF", "B0", "B1", "B2", "B3", "B4", "B5",
            "B6", "B7", "B8", "B9", "BA", "BB", "BC", "BD", "BE", "BF", "C0",
            "C1", "C2", "C3", "C4", "C5", "C6", "C7", "C8", "C9", "CA", "CB",
            "CC", "CD", "CE", "CF", "D0", "D1", "D2", "D3", "D4", "D5", "D6",
            "D7", "D8", "D9", "DA", "DB", "DC", "DD", "DE", "DF", "E0", "E1",
            "E2", "E3", "E4", "E5", "E6", "E7", "E8", "E9", "EA", "EB", "EC",
            "ED", "EE", "EF", "F0", "F1", "F2", "F3", "F4", "F5", "F6", "F7",
            "F8", "F9", "FA", "FB", "FC", "FD", "FE", "FF" };

    private final static byte[] val = { 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
            0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
            0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
            0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
            0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x00, 0x01,
            0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x3F, 0x3F, 0x3F,
            0x3F, 0x3F, 0x3F, 0x3F, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x3F,
            0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
            0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
            0x3F, 0x3F, 0x3F, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x3F, 0x3F,
            0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
            0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
            0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
            0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
            0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
            0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
            0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
            0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
            0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
            0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
            0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
            0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
            0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
            0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F };

    /**
     * <p>Discription:[加码]</p>
     * @param s
     * @return
     * @author:[许狄]
     * @update:[日期YYYY-MM-DD] [更改人姓名][变更描述]
     */
    public static String escape(String s)
    {
        StringBuffer sbuf = new StringBuffer();
        int len = s.length();
        for (int i = 0; i < len; i++)
        {
            int ch = s.charAt(i);
            if (ch == ' ')
            { // space : map to '+'
                sbuf.append('+');
            }
            else if ('A' <= ch && ch <= 'Z')
            { // 'A'..'Z' : as it was
                sbuf.append((char) ch);
            }
            else if ('a' <= ch && ch <= 'z')
            { // 'a'..'z' : as it was
                sbuf.append((char) ch);
            }
            else if ('0' <= ch && ch <= '9')
            { // '0'..'9' : as it was
                sbuf.append((char) ch);
            }
            else if (ch == '-' || ch == '_' // unreserved : as it was
                    || ch == '.' || ch == '!' || ch == '~' || ch == '*'
                    || ch == '/'' || ch == '(' || ch == ')')
            {
                sbuf.append((char) ch);
            }
            else if (ch <= 0x007F)
            { // other ASCII : map to %XX
                sbuf.append('%');
                sbuf.append(hex[ch]);
            }
            else
            { // unicode : map to %uXXXX
                sbuf.append('%');
                sbuf.append('u');
                sbuf.append(hex[(ch >>> 8)]);
                sbuf.append(hex[(0x00FF & ch)]);
            }
        }
        return sbuf.toString();
    }

    /**
     * <p>Discription:[解码]</p>
     * @param s
     * @return
     * @author:[许狄]
     * @update:[日期YYYY-MM-DD] [更改人姓名][变更描述]
     */
    public static String unescape(String s)
    {
        StringBuffer sbuf = new StringBuffer();
        int i = 0;
        int len = s.length();
        while (i < len)
        {
            int ch = s.charAt(i);
            if (ch == '+')
            { // + : map to ' '
                sbuf.append(' ');
            }
            else if ('A' <= ch && ch <= 'Z')
            { // 'A'..'Z' : as it was
                sbuf.append((char) ch);
            }
            else if ('a' <= ch && ch <= 'z')
            { // 'a'..'z' : as it was
                sbuf.append((char) ch);
            }
            else if ('0' <= ch && ch <= '9')
            { // '0'..'9' : as it was
                sbuf.append((char) ch);
            }
            else if (ch == '-' || ch == '_' // unreserved : as it was
                    || ch == '.' || ch == '!' || ch == '~' || ch == '*'
                    || ch == '/'' || ch == '(' || ch == ')')
            {
                sbuf.append((char) ch);
            }
            else if (ch == '%')
            {
                int cint = 0;
                if ('u' != s.charAt(i + 1))
                { // %XX : map to ascii(XX)
                    cint = (cint << 4) | Escape.val[s.charAt(i + 1)];
                    cint = (cint << 4) |  Escape.val[s.charAt(i + 2)];
                    i += 2;
                }
                else
                { // %uXXXX : map to unicode(XXXX)
                    cint = (cint << 4) |  Escape.val[s.charAt(i + 2)];
                    cint = (cint << 4) |  Escape.val[s.charAt(i + 3)];
                    cint = (cint << 4) |  Escape.val[s.charAt(i + 4)];
                    cint = (cint << 4) |  Escape.val[s.charAt(i + 5)];
                    i += 5;
                }
                sbuf.append((char) cint);
            }
            i++;
        }
        return sbuf.toString();
    }

}

Rust Reqwest+Rustls 自签名证书校验 所以这里必须保证reqwest引用的rustls库和本地工程一致。以上就是实现不校验签名的逻辑,后续自己可以在对应回调进行逻辑判断。 阅读详情

相关推荐

打通Creo与Matlab的桥梁:Simscape Multibody Link插件安装与配置全攻略

本文详细介绍了Simscape Multibody Link插件的安装与配置全流程,旨在帮助机械工程师和开发者打通Creo与Matlab/Simulink之间的桥梁,实现CAD模型到多体动力学仿真的高效转换。文章重点解析了版本兼容性、管理员权限、注册文件配置等关键步骤与常见故障排查方法,助力用户快速建立设计与仿真一体化工作流。

rrr55的博客 634

小白笔记——如何解决Cookie的中文乱码问题?

如何解决Cookie的中文乱码问题? ## 1. Cookie能不能存中文? ​ 如果在Cookie中存入中文,特别容易出现问题。我们需要使用URL编码解码格式进行操作。 ​ 在Tomcat 8 之前 Cookie中不能直接存储中文数据,需要进行中文数据转码(URL编码)。 ​ 在Tomact 8 之后 Cookie支持中文数据,但是一些特殊字符是不支持的(空格),还需要使用URL编码。 ## 2. Cookie编码解码流程图 [外链图片转存失败,源站可能有防盗链机制,建议将图

weixin_44339422的博客 4013

Xilinx的DDR4 IP

Xilinx的DDR4 IP

weixin_39896700的博客 4458

Web开发中特殊字符的转义

<br />一,HTML里面,一句典型的<input name="name1" id="id1" value="XXX">或<input name="name1" id="id1" value='XXX'>这里首先澄清一点,HTML里面没有反斜杠'/'转义符这一说,不要在HTML里把/当作转义符。如果在HTML出现你觉得象是转义符的"/",那么它也许是为其它后续的文本处理埋下伏笔的。如果想让这"XXX"里支持任何的文本而不产生页面错误,基本上需要处理以下几个特殊字符的转义:1. " 双引号 " -> &#3

web开发 6982

强化学习Q值迭代的几何视角:从策略区域到快速收敛

在强化学习中,Q值迭代是求解最优策略的核心算法,其理论基础建立在贝尔曼不动点定理之上。该算法通过迭代更新Q函数,使其逐步逼近最优值函数。从几何视角看,整个Q函数空间可被视为一个高维流形,每个Q函数对应流形上的一个点,而贝尔曼最优算子则定义了流形上的变换轨迹。理解这一几何结构,特别是由策略超平面划分出的凸多面体区域,对于分析算法的收敛行为至关重要。在实际工程中,传统Q值迭代可能在高维或稀疏奖励环境下收敛缓慢,甚至陷入策略高原。通过引入策略区域缓存与自适应学习率等几何启发方法,可以更高效地导航策略空间,加速策略

weixin_30444111的博客 319

Unity简单操作:PostProcessing的使用

Postprocessing是一个unity2018版本的集成后期插件,有了这个插件,之后用unity开发时,后期调整颜色、光晕等会很方便。 目录 新建一个postprocessing profile(配置文件)。​ 参数说明: 新建一个postprocessing profile(配置文件)。 在主相机下加一个组件PostProcess Layer。 注意:需要将相机的Layer层设置与Post Process Layer 下的Volume blending(体积混合)...

weixin_39114763的博客 7368

cookies转换

class transCookie: def __init__(self, cookie): self.cookie = cookie def stringToDict(self): ''' 将从浏览器上Copy来的cookie字符串转化为Dict :return: ''' itemDict = {} items = self.cookie.split(';') ..

u014210048的专栏 3046

解决 NLPIR (中科院分词) License 过期问题

因为学习需要,使用到了中文分词技术,网上搜索一番,最终选择了名气比较大的中科院分词器(NLPIR/ICTCLAS)。 用了几个月之后突然报错: E:\code\URLClassifier\Data\NLPIR.user Not valid license or your license expired! Please feel free to contact pipy_zhan

勇敢向前冲 1万+

cookies设置以及作用范围

1.cookie的个数限制:不同浏览器有不同的标准,20~50个。 2.cookie的大小限制:4KB左右的大小 3.cookie的设置:只能一个一个设置,不能批量设置。 如:document.cookie = "key=value;"; 4.cookie的作用范围:同一个浏览器,同一个路径下cookie可以共享。如果上级路径想要访问,则设置path属性,如document.cookie = "k...

Scorpion-S的博客 5213

把注释掉的代码删除掉:在 SAP ABAP 团队里打造可回溯、可测试、可演进的代码库

摘要 SAP ABAP项目中常见的"注释掉代码"反模式存在严重隐患:它增加代码噪音,制造虚假安全感,并可能引发安全和合规风险。Clean ABAP指南明确建议删除这类代码,理由包括: 版本控制系统已提供完整历史回溯能力 注释代码会误导开发者,增加理解成本 临时禁用需求应通过Feature Toggle实现 必须保留的参考代码应放入$TMP等隔离区域 团队应建立自动化检查机制,将"删除注释代码"纳入工程规范,确保代码库只表达当前有效的行为逻辑。在AI时代,可以利用工具辅

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 2451

【软件系统架构】系列四:嵌入式软件-NPU(神经网络处理器)系统及模板

NPU(Neural Processing Unit) 是专门用于人工神经网络推理与训练的处理器,具备高并行、低功耗、低延迟等特点。它是边缘 AI、自动驾驶、智能摄像头、语音识别等场景中的关键硬件。

moton2017的博客 2249

js中cookie的使用

cookie是字符串而且还是一个特定格式的文本字符串  格式:cookieName=cookieValue;expires=expiresDate;path=URLpath;domain=siteDomain//cookie名称,失效日期,储存URL,储存域值; 设置cookie  每个cookie都是一个名/值对,可以把下面这样一个字符串赋值给document.cookie

zhuchunyan_aijia的博客 1072

USB 基础学习:USB 电气信号介绍

USB电气信号技术解析 USB通信的核心是差分信号传输技术,通过D+和D-两根线传输相位相反的电压信号实现数据通信。USB信号系统包含三类关键信号:差分数据信号(抗干扰性强)、单端状态信号(用于设备识别)和电源信号(提供5V供电)。USB2.0采用400mV电压摆幅和NRZI编码,支持低速(1.5Mbps)至高速(480Mbps)传输;USB3.0则新增专用差分对,数据速率可达20Gbps。物理层通过上拉/下拉电阻检测设备连接,高速模式需特殊握手协议。抗干扰设计的关键在于保持差分线等长、阻抗匹配和使用共模扼

浩瀚之水的专栏 1783

response addCookie Cookie存值报错

Cookie存值报错 注意cookie的value中不能含有空格、逗号、分号等特殊字符!!! 在这里插入图片描述 所以访问页面报了500 解决方案 如果要继续存时间的话如何改进 把时间改成毫秒值存入cookie 等取出的时候再format 如果是其它数据 例如json 可以将json编码存入cookie 可以将json编码存入cookie 等取出cookie的时候再进行解码 ...

win_the_world的博客 324

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Cookie设置name和value值时使用特殊字符导致add失败

转码方式:使用工具类 URLEncoder 中的String URLEncoder.encode(String s, String enc)编码。在取出时使用工具类URLDecoder中的String decode(String s, String enc)方法解码可以正常显示。虽然tomact8.0以上的版本设置Cookie时支持了中文,但是依然使用不了特殊字符,如空格。在设置特殊字符时只需要将这些字符进行转码,就可以将特殊字符设置为name或者value了。转码后就可以设置成功了。...

qq_52820060的博客 369

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

JSON-java Cookie管理:浏览器Cookie与JSON对象的双向转换终极指南

JSON-java库提供了强大的Cookie管理功能,能够轻松实现浏览器Cookie与JSON对象之间的双向转换。这种功能对于Web开发、API测试和数据处理等场景都至关重要。本文将为您详细介绍如何使用JSON-java进行Cookie的解析、构建和转换。 ## 🍪 什么是Cookie管理? 在Web开发中,Cookie是存储在用户浏览器中的小型文本数据,用于跟踪用户会话、存储偏好设置等。J

gitblog_00328的博客 695

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

js-cookie自定义编码解码功能:提升Cookie处理灵活性的终极指南

在现代Web开发中,Cookie处理是前端工程师日常工作的重要组成部分。**js-cookie**作为一款轻量级JavaScript库,提供了简洁的API来管理浏览器Cookie。本文将深入探讨如何利用其强大的自定义编码解码功能,解决跨平台Cookie处理的兼容性问题,让你的Cookie操作更加灵活高效! ## 为什么需要自定义编码解码? 默认情况下,js-cookie采用RFC 6265标准

gitblog_00705的博客 775

3分钟掌握:用js-cookie实现Cookie批量管理的高效技巧

js-cookie是一个简单轻量的JavaScript API,专门用于处理浏览器Cookie。它支持广泛的浏览器,无依赖,体积小于800字节(gzip压缩后),且符合RFC 6265标准,是前端开发中管理Cookie的理想工具。 ## 快速安装与基础配置 🚀 ### 一键安装步骤 通过npm快速安装js-cookie: ```bash npm i js-cookie ``` 若需在项

gitblog_00563的博客 1126

告别Cookie操作烦恼:js-cookie高级用法与编码转换实战指南

在现代Web开发中,处理浏览器Cookie往往是一项繁琐且容易出错的任务。无论是设置过期时间、处理跨域访问,还是进行数据编码转换,都需要开发者编写大量重复代码。而**js-cookie**作为一款轻量级JavaScript库,通过简洁的API设计和强大的功能封装,彻底解决了这些痛点。本文将带你深入探索js-cookie的核心优势、高级用法以及编码转换技巧,让Cookie操作变得高效而轻松。 ##

gitblog_00551的博客 386

关于cookie

1.设置cookie:    document.cookie = 'name = lc'   docment.cookie = 'sex = man' 2.读取cookie:   document.cookie 3.当存入多条cookie再直接输出cookie时输出方式为 每条的内容+"; "(分号加一个空格)的形式。   alert(document.cookie);//输...

QLX18098356435的博客 172

如何用 js-cookie 轻松管理浏览器 Cookie:超实用的轻量级 JavaScript 库指南

在现代网页开发中,浏览器 Cookie 的管理是一项基础且重要的任务。**js-cookie** 作为一款轻量级 JavaScript 库,以其简洁的 API 和强大的功能,成为开发者处理 Cookie 的理想选择。本文将带你快速掌握这款工具的核心用法,让 Cookie 管理变得简单高效。 ## 📦 什么是 js-cookie? js-cookie 是一个仅 2KB 大小的开源库([src/

gitblog_00032的博客 694

Web开发中特殊字符的处理

URL中的特殊字符是不能再URL中直接传递的,需要进行编码。编码的格式为:%加字符的ASCII码,即一个百分号%,后面跟对应字符的ASCII(16进制)码值。 字符 名称 16进制值 + URL中的+表示空格 %2B 空格 URL中的空格可以用+号或者编码

linglinglu的专栏 1776

解决Javaweb后端中Cookie值中存在无效字符的问题

对Cookie值中存在无效字符的一般原因进行了分析,并且说明该错误的原因一般是编码的错误,此时我们通过URLEncoder.encode()进行编码即可解决

wangye135的博客 1005

2025年必备:js-cookie库彻底改变浏览器Cookie管理方式

你还在为处理浏览器Cookie而编写冗长复杂的原生JavaScript代码吗?是否曾因Cookie的作用域、过期时间设置不当导致用户登录状态异常?本文将带你掌握js-cookie库的核心用法,用不到20行代码解决90%的Cookie管理难题。读完本文你将学到:3种安装方式快速集成、4个核心API极简操作、5大高级特性实战技巧,以及避坑指南和性能优化建议。 ## 为什么选择js-cookie? ...

gitblog_00980的博客 1021

彻底解决!js-cookie在IE浏览器中的兼容性问题与实战方案

你是否遇到过这样的情况:使用js-cookie在Chrome、Firefox等现代浏览器中一切正常,但到了IE浏览器就出现各种诡异问题?本文将从实际场景出发,详细分析IE浏览器下js-cookie的常见兼容性问题,并提供经过验证的解决方案,让你的Cookie操作在所有浏览器中都能稳定运行。 读完本文你将掌握: - IE浏览器对Cookie处理的特殊性 - js-cookie在IE中常见的3类错误...

gitblog_00623的博客 923

突破浏览器限制:用js-cookie实现跨域Cookie共享的完整方案

在现代Web开发中,Cookie(小型文本文件)是实现用户状态管理的重要工具,但浏览器的同源策略(Same-Origin Policy)严重限制了Cookie在不同域名间的共享能力。当你需要在`example.com`和`sub.example.com`甚至完全不同的域名间共享用户登录状态时,普通Cookie往往束手无策。本文将详解如何使用[js-cookie](https://link.gitc...

gitblog_00498的博客 1032
上一篇: WebLogic下对JSP校验比较严格所出现的问题
下一篇: Sybase数据库乱码问题
潭溪Debby
博客等级 码龄21年 32粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值