JSP获取的json数据中{}[]等变成了乱码解决思路

JSP获取的json数据中{}[]等变成了乱码
 //获取当前任务树形数据
    var tree = gantt.getData();
    
    //将数据转换为JSON字符串
    var strJSON = mini.encode(tree);

    var params = {
        tree: strJSON
    };
    alert("将甘特图的任务数据提交到服务端进行保存");

    //使用jQuery的ajax,把任务数据,发送到服务端进行处理
        $.ajax({
           url: "../JSP/test.jsp",
           type: "POST",
   
          data: params,
           success: function (text) {
               alert("保存成功"+lpf);
           }
       });

我后台使用jsp将数据保存到一个.txt中
<%  
File file=new File("d:\\test.txt");
FileWriter fw=new FileWriter(file);

BufferedReader reader = request.getReader();
  StringBuffer buffer = new StringBuffer();
  String string;
  while ((string = reader.readLine()) != null) {
   buffer.append(string);
  }
  BufferedWriter bw=new BufferedWriter(fw);
bw.write(buffer.toString()); 
bw.close();
fw.close();
  reader.close();
   %>

这样保存到数据与预料的不一样,不知道怎么办。
其格式本来应该是
[
{Name: "P1", UID: 1,
Tasks: [
{Name: "task1", UID: "p1", Start: "2007-01-03T00:00:00", Finish: "2007-01-03T23:59:59", PercentComplete: 0, Duration: 1*24*3600},
{Name: "task2", UID: "p2", Start: "2007-01-07T00:00:00", Finish: "2007-01-09T23:59:59", PercentComplete: 0, Duration: 3*24*3600},
{Name: "task3", UID: "p3", Start: "2007-01-09T00:00:00", Finish: "2007-01-10T23:59:59", PercentComplete: 80, Duration: 2*24*60*60},
{Name: "task4", UID: "p4", Start: "2007-01-12T00:00:00", Finish: "2007-01-16T23:59:59", PercentComplete: 100, Duration: 5*24*60*60}
]
},
这样json数据格式
然然而保存到文件内容却是
tree=%5B%7B%22Name%22%3A%22P1%22%2C%22UID%22%3A1%2C%22Tasks%22%3A%5B%7B%22Name%22%3A%22task1%22%2C%22UID%22%3A%22p1%22%2C%22Start%22%3A%222007-01-03T00%3A00%3A00%22%2C%22Finish%22%3A%222007-01-03T23%3A59%3A59%22%2C%22PercentComplete%22%3A0%2C%22Duration%22%3A86400%2C%22ParentUID%22%3A1%2C%22_id%22%3A1%2C%22__Index%22%3A0%7D%2C%7B%22Name%22%3A%22task2%22%2C%22UID%22%3A%22p2%22%2C%22Start%22%3A%222007-01-07T00%3A00%3A00%22%2C%22Finish%22%3A%222007-01-09T23%3A59%3A59%22%2C%22PercentComplete%22%3A0%2C%22Duration%22%3A259200%2C%22ParentUID%22%3A1%2C%22_id%22%3A2%2C%22__Index%22%3A0%7D%2C%7B%22Name%22%3A%22task3%22%2C%22UID%22%3A%22p3%22%2C%22Start%22%3A%222007-01-09T00%3A00%3A00%22%2C%22Finish%22%3A%222007-01-10T23%3A59%3A59%22%2C%22PercentComplete%22%3A80%2C%22Duration%22%3A172800%2C%22ParentUID%22%3A1%2C%22_id%22%3A3%2C%22__Index%22%3A1%7D%2C%7B%22Name%22%3A%22task4%22%2C%22UID%22%3A%22p4%22%2C%22Start%22%3A%222007-01-12T00%3A00%3A00%22%2C%22Finish%22%3A%222007-01-16T23%3A59%3A59%22%2C%22PercentComplete%22%3A100%2C%22Duration%22%3A432000%2C%22ParentUID%22%3A1%2C%22_id%22%3A4%2C%22__Index%22%3A0%7D%5D%2C%22_id%22%3A1%2C%22_uid%22%3A1%2C%22_pid%22%3A-1%2C%22_level%22%3A0%2C%22_height%22%3A53%7D%2C%7B%22Name%22%3A%22P2%22%2C%22UID%22%3A2%2C%22Tasks%22%3A%5B%7B%22Name%22%3A%22task5%22%2C%22UID%22%3A%22p5%22%2C%22Start%22%3A%222007-01-02T00%3A00%3A00%22%2C%22Finish%22%3A%222007-01-05T23%3A59%3A59%22%2C%22PercentComplete%22%3A0%2C%22Duration%22%3A345600%2C%22ParentUID%22%3A2%2C%22_id%22%3A5%2C%22__Index%22%3A0%2C%22isBaseline%22%3Afalse%7D%2C%7B%22Name%22%3A%22task6%22%2C%22UID%22%3A%22p6%22%2C%22Start%22%3A%222007-01-09T00%3A00%3A00%22%2C%22Finish%22%3A%222007-01-12T23%3A59%3A59%22%2C%22PercentComplete%22%3A0%2C%22Duration%22%3A259200%2C%22ParentUID%22%3A2%2C%22_id%22%3A6%2C%22__Index%22%3A0%7D%2C%7B%22Name%22%3A%22task7%22%2C%22UID%22%3A%22p7%22%2C%22Start%22%3A%222007-01-19T00%3A00%3A00%22%2C%22Finish%22%3A%222007-01-20T23%3A59%3A59%22%2C%22PercentComplete%22%3A80%2C%22Duration%22%3A172800%2C%22ParentUID%22%3A2%2C%22_id%22%3A7%2C%22__Index%22%3A0%7D%2C%7B%22Name%22%3A%22task8%22%2C%22UID%22%3A%22p8%22%2C%22Start%22%3A%222007-02-12T00%3A00%3A00%22%2C%22Finish%22%3A%222007-02-16T23%3A59%3A59%22%2C
这样的 ,可能其中{}[]:等变成那种字符码。
------解决方案--------------------
你的数据被做了 url 编码,请检查是哪个环节做的

好像是提交过来的数据吧?
如果是,就做一次 url 解码
------解决方案--------------------
你这一行代码确定是转换成了json,而不是进行了一次编码?
var strJSON = mini.encode(tree);

你去打印一下, 我估计是这个把json编码了