/ / gson + retrofit2:特殊文字の解析 - アンドロイド、エンコード、文字エンコード、gson、retrofit2

gson + retrofit2:特殊文字の解析 - アンドロイド、エンコーディング、文字エンコーディング、gson、retrofit2

私の応答には、英単語の音節(例:ri、pe ritri "eɪʃʌn)のような特殊文字が含まれていますが、gsonはそれらを解析できず、例外をスローします Expected begin_object but was string at line 1 column 199 path $ エラーメッセージ。私は以下のカスタムデシリアライザを書くことでutf-8でレスポンスをエンコードしようとしましたが、うまくいきませんでした。それはすぐに終了します gson.fromJson() が呼び出されます。

public class WordResponseDeserializer implements JsonDeserializer<Define> {

@Override
public Define deserialize(JsonElement json, Type typeOfT,
JsonDeserializationContext context) throws JsonParseException {
Log.d(getClass().getSimpleName(), "In Deserialize");
Gson gson = new Gson();
String string = json.toString();
byte[] bytes = string.getBytes();
String enString = new String(bytes, Charset.forName("utf-8"));
Define gDefine = gson.fromJson(enString, Define.class); //Crashing here
return gDefine;
}
}

Gsonはこれらの特殊文字を解析できますか?可能な方法は何ですか?

回答:

回答№1は0

コードのこの部分を変更します。

byte[] bytes = string.getBytes();
String enString = new String(bytes, Charset.forName("utf-8"));
Define gDefine = gson.fromJson(enString, Define.class); //Crashing here

これとともに:

byte[] bytes = string.getBytes("ISO-8859-1");
String enString = new String(bytes, Charset.forName("utf-8"));
Define gDefine = gson.fromJson(enString, Define.class);