帆软报表有个单点登录插件,需要对用户名进行URI编码,然而他文档里面提供的是基于JS的函数encodeURIComponent实现的编码,如果你要在后端实现,当然可以自己写个简单的方法,以便对“/+=”等字符转百分号格式的ASCII码,但是我由于之前一直在用hutool的工具,强迫症不想自己写代码。查阅了hutool官方网站,在指南里面完全没有提到,百度了一下,也没说怎么实现。于是自己查阅了hutool的API文档及其源代码,发现其文档中建议使用RFC3986工具类代替过时且不标准的URLEncode工具,该类提供基于RFC3986的标准编码方法。
基于以上原因,一句话就完成了encodeURIComponent的后端解决方案:
RFC3986.QUERY_PARAM_VALUE_STRICT.encode("待编码的字符串",StandardCharsets.UTF_8);
QUERY_PARAM_VALUE_STRICT 针对参数值进行严格编码,没有保留字符。
该工具还提供其他多种格式可选,均参考了RFC3986官方指南,具体可以可自行参考hutool官方文档或者源代码