gpt4 book ai didi

Java URLDecoder 返回?

转载 作者:行者123 更新时间:2023-12-02 06:10:51 28 4
gpt4 key购买 nike

我有一个非常基本的测试,但它失败了,我不明白为什么。

这是我的代码

System.out.println(URLEncoder.encode("去", "UTF-8")); // result = "%E5%8E%BB"
System.out.println(URLDecoder.decode("%E5%8E%BB", "UTF-8")); result = ?

为什么第二个 system.out 结果是 ?我期待再次见到去。

为了添加到更大的图片中,我将在 javascript 中使用encodeURIComponent() 将我的数据发布到我想在其中使用 URLDecoder.decode 的 servlet,但我什至无法让上面的示例工作。我缺少什么?

更新:刚刚注意到一些奇怪的事情,当我在 servlet 中运行代码时,我得到了我描述的结果,但如果我只是在 main 方法中运行它,它就可以工作。这是我的 servlet 代码

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.net.URLDecoder;
import java.net.URLEncoder;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class SaveFile extends BasicServiceServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//request.setCharacterEncoding("UTF-8");
//response.setContentType("text/html; charset=UTF-8");
String DIR = getBaseUrl();

String project = request.getParameter("project");
String foldername = request.getParameter("foldername");
String filename = request.getParameter("filename");
String fileContent = (String)request.getParameter("content");
String ch = (String)request.getParameter("char"); //char = 去
String pathToFile = DIR + project + "/" + foldername + "/" + filename;
System.out.println(URLEncoder.encode("去", "UTF-8")); //reults in %E5%8E%BB
System.out.println(URLDecoder.decode(ch, "UTF-8")); // results in ?
System.out.println(URLDecoder.decode("%E5%8E%BB", "UTF-8")); //results in ?
System.out.println("去".equals(URLDecoder.decode("%E5%8E%BB", "UTF-8"))); //this results in true

try {
//writing it to file results in ?
BufferedWriter out = new BufferedWriter(new FileWriter(pathToFile));
out.write(URLDecoder.decode(fileContent, "UTF-8"));
out.close();
System.out.println("STAT - SaveFile " + filename);
}catch(IOException e){
System.out.println("STAT - SaveFile Error");
}
}
}

但是运行一个简单的 main 方法对我来说很有效

import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.net.URLEncoder;

public class test {

public static void main(String[] args) {
// TODO Auto-generated method stub
try {
System.out.println(URLEncoder.encode("去", "UTF-8"));
System.out.println(URLDecoder.decode("%E5%8E%BB", "UTF-8"));
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

最佳答案

这只是您的控制台的显示问题。编码/解码工作正常,正如您使用以下代码所看到的:

System.out.println("去".equals(URLDecoder.decode("%E5%8E%BB", "UTF-8"))); //displays "true"

--编辑--

您的servlet代码不起作用可能是因为您在构造编写器时没有指定字符编码,因此它使用默认编码。请改用以下内容:

new OutputStreamWriter(new FileOutputStream(pathToFile), "UTF-8");

关于Java URLDecoder 返回?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21900463/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com