首页 新闻 会员 周边

springboot的@Controller使用字符串拼接重定向

0
悬赏园豆:10 [已解决问题] 解决于 2022-01-30 14:10

大致代码如下

@PostMapping("/test")
    public String userUploadWorkFile(HttpServletRequest request, @RequestParam("file") MultipartFile multipartFile) {
        String projectName = request.getParameter("projectName");
        ...
        ...
        ...
        return "redirect:/project/list.html?projectName=" + projectName;
    }

最终浏览器上的访问路径是 /project/list.html?projectName=???? ,但代码中的字符串 projectName 是有确定值的,并不是????。
我想请问这是什么原因导致的,望大佬传道授业解惑。

up-bear的主页 up-bear | 初学一级 | 园豆:134
提问于:2022-01-29 18:48
< >
分享
最佳答案
0

projectName 是 非ASCII 码组成?
return之前,先做转码,再用

收获园豆:10
快乐的凡人721 | 老鸟四级 |园豆:3916 | 2022-01-29 20:35

没考虑到编码的原因,去试试看看。

up-bear | 园豆:134 (初学一级) | 2022-01-29 20:43

好像不行,我用了两种方式。
一、String pro = new String(proName_.getBytes(StandardCharsets.US_ASCII)) 最终的结果还是一堆 ????
二、从网上搜的
StringBuffer stringBuffer = new StringBuffer();
char[] chars = projectName.toCharArray();
for(int i = 0; i < chars.length; i++){
if(i != chars.length -1){
stringBuffer.append((int)chars[i]).append(",");
}else {
stringBuffer.append((int) chars[i]);
}
}
String pro_ = stringBuffer.toString();
最终的结果是 projectName=19971,21495,39033,30446。比第一种好一点(😂)。

up-bear | 园豆:134 (初学一级) | 2022-01-30 10:22

@up-bear:
前端 URLEncoder(JS里面是什么?)
后端 接收 URLDecoder,返回(组装) URLEncoder
基于Java

快乐的凡人721 | 园豆:3916 (老鸟四级) | 2022-01-30 10:36

@快乐的凡人721: 解决了,感谢凡哥。有点懵逼,ieda的编码我设置的是utf8,但还是需要对string进行utf8转码,可能idea设置中的编码和string编码方式压根就没什么关系。

up-bear | 园豆:134 (初学一级) | 2022-01-30 14:10

@up-bear:
IDEA的编码设置 是和 源码有关
对Web服务器的编码没影响的
区分开来
注意,上面的话 80%确信度

快乐的凡人721 | 园豆:3916 (老鸟四级) | 2022-01-30 15:05

@快乐的凡人721: 嗯嗯。

up-bear | 园豆:134 (初学一级) | 2022-01-30 16:32
其他回答(1)
0

看看这个 springboot系列
git地址: https://github.com/zhikecore/superblog

智客工坊 | 园豆:1855 (小虾三级) | 2022-01-30 11:01
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册