0

非常に基本的なテストが失敗しましたが、その理由がわかりません。

これが私のコードです

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

2 番目の system.out が になるのはなぜですか? 去にまた会えることを期待しています。

より大きな図に追加するために、javascriptで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");
    }
   }
 }

しかし、単純なメインメソッドを実行するとうまくいきます

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();
    }
}
}
4

3 に答える 3