나는 나에게 실패하는 아주 기본적인 테스트를 가지고 있는데 왜 그럴 수 없는지를 알아낼 수 없다. 여기Java URLDecoder가 반환합니까?
내 코드
System.out.println(URLEncoder.encode("去", "UTF-8")); // result = "%E5%8E%BB"
System.out.println(URLDecoder.decode("%E5%8E%BB", "UTF-8")); result = ?
왜 않는에서 두 번째로 System.out에 결과? 나는 다시 ____를보고 싶어합니다.
큰 그림을 추가하려면 자바 스크립트에서 encodeURIComponent()를 사용하여 URLDecoder.decode를 사용하려는 서블릿에 데이터를 게시하지만 위의 예제가 작동하지 않습니다. 내가 뭘 놓치고 있니?
업데이트 : 그냥 뭔가 이상한 것으로 나타났습니다. 서블릿에서 코드를 실행할 때 설명 된 결과가 표시되지만, 주된 방법으로 실행하면 작동합니다. 여기 내 서블릿 코드
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();
}
}
}
콘솔 출력 형식은 utf-8이어야합니다. 어떤 IDE를 사용하고 있습니까? – Rohan
이클립스를 사용하고 있습니다. – ryuutatsuo
파일에 글쓰기를 시도하고 편집기에서보고 있습니까? 콘솔이 UTF-8 인코딩을 사용하고 있지 않을 수 있습니다. – cosjav