Java特殊字符编码

Java特殊字符编码,java,json,unicode,encoding,Java,Json,Unicode,Encoding,我在编码JSON数据返回的java特殊字符时遇到问题。我正在读取一个JSON文件“raw.JSON”,某些名称给我带来了麻烦 例如,我从JSON文件中读取名称“Martin Perénya”,并将其推送到JSONObject的JsonArray中,其中包含UNICODE格式的特殊字符,如“Martin Per\u00e9nya”,但我的代码将其解释为“Martin Perénya”。有谁能帮我解决这个问题,或者给我指出正确的方向吗?我是新手,不知道该怎么做,谢谢 package main.se

我在编码JSON数据返回的java特殊字符时遇到问题。我正在读取一个JSON文件“raw.JSON”,某些名称给我带来了麻烦
例如,我从JSON文件中读取名称“Martin Perénya”,并将其推送到JSONObject的JsonArray中,其中包含UNICODE格式的特殊字符,如“Martin Per\u00e9nya”,但我的代码将其解释为“Martin Perénya”。有谁能帮我解决这个问题,或者给我指出正确的方向吗?我是新手,不知道该怎么做,谢谢

package main.service;

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.text.SimpleDateFormat;
import java.util.Date;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;

public class Service {


    public String getAll() throws FileNotFoundException {

        JsonParser jsonParser = new JsonParser();

        FileReader reader;
        reader = new FileReader("raw.json");
        JsonObject data = (JsonObject) jsonParser.parse(reader);


        JsonArray issues = data.get("issues").getAsJsonArray();     
        JsonArray processedIssues = new JsonArray();


        for(JsonElement i: issues) {
            JsonObject object = new JsonObject();
            JsonObject issue =(JsonObject) i;
            JsonObject fields = issue.get("fields").getAsJsonObject();

            //displayName
            JsonObject assignee = fields.get("assignee").getAsJsonObject();
            String name = assignee.get("displayName").getAsString();
            if(assignee.size() !=0) {

                if(name.length()==0) {
                    name = "None";
                }
                else {
                    name = assignee.get("displayName").getAsString();
                }
            }

            object.addProperty("name", name);
            processedIssues.add(object);
        }   


        JsonObject returnData = new JsonObject();
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String dateString = format.format( new Date());
        returnData.addProperty("created", dateString);
        returnData.add("featureList", processedIssues);

        System.out.println("returnedData - " +returnData);




        return returnData.toString();
    }

}

实现这个解决方案@Josepraven:请不要。阅读该问题的无数高票答案中的任何一个,了解发生了什么,而不是用基本上随机的编码对字符串进行无意识的编码和解码,这不是解决此问题的合适方法。
FileReader
将使用平台默认编码,但是JSON通常是用UTF-8编码编写的。使用
FileInputStream
InputStreamReader
构造第二个,同时传入
“UTF-8”
字符串,告诉它有关编码的信息。链接到“解决方案”的好处是有很多答案需要向下投票…[1]我不愿意将你的问题标记为,但请看一看,因为这可能会有所帮助。[2] 更新您的问题,以在raw.json中显示一些示例数据,以便其他人可以尝试复制/解决您的问题。