写了一个网页的小程序,没有服务端,本来运行得不错,但现在开始需要有保存功能,不用服务端不行了。
基于最小化程序尺寸和尽量少改代码的原则,所以用rust写了一个本地服务端到127.0.0.1的一个端口上。使用POST方法交互时,上传英文没问题,上传中文就会变成类似“%E9%BB%98%E8%AE%A4%E8%AE%BE%E7%BD%AE”的乱码。
html带有utf-8标识,如下:
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
rust解码如下:
let mut buffer = [0; 1024 * 2];
stream.read(&mut buffer).unwrap();
let header = String::from_utf8_lossy(&buffer[..]);
没学过web编程,单纯是个人爱好,编写了个小工具,可能犯了啥常识性错误?另外,这个是自己给自己提供服务,所以也用不到什么warp或者actix-web了,所以有什么办法可以尽量使用std库解决这个问题么,求教!
1
共 4 条评论, 1 页
评论区
写评论得救了,使用了
percent_encoding
库percent_decode(&buffer[..]).decode_utf8().unwrap()
代替了String::from_utf8_lossy(&buffer[..])
。--
👇
w: 这个不是乱码了,是进行了url转码。楼主可以在网上搜个在线转码的看下和提交的是否一致。
原来如此,我看官方书直接就string_from_utf8了。。无语
--
👇
7sDream: https://zh.wikipedia.org/wiki/%E7%99%BE%E5%88%86%E5%8F%B7%E7%BC%96%E7%A0%81
这个不是乱码了,是进行了url转码。楼主可以在网上搜个在线转码的看下和提交的是否一致。
https://zh.wikipedia.org/wiki/%E7%99%BE%E5%88%86%E5%8F%B7%E7%BC%96%E7%A0%81