为什么我必须重新编码为utf-8我的编码JSON响应才能将其保存到SQLite?

时间:2016-12-18 22:53:01

标签: android json sqlite encoding utf-8

我使用UTF-8正确编码了我的JSON响应,并尝试将响应字符串保存到我的SQLite表中。

然后我注意到它没有妥善保存并且有?????不是英语的人物。

我尝试在保存前修改编码

        @Override
        public void onResponse(String response)
        {
            SavedResponse mysavedresponse = new SavedResponse();
            JSONObject j = null;
            int resp_count = (int) db.getResponsesCount();

            try {

                //String MyResponse = fixEncodingUnicode(response);
                //CHECK IF IT IS NEW RESPONSE
                if(resp_count>0)
                {
                    mysavedresponse = db.getMySavedResponse();
                    response = mysavedresponse.getSavedresponse();

                }else
                {
                    **db.AddResponse(fixEncodingUnicode(response));**
                    db.close();
                }

                j = new JSONObject(response);




            }catch (JSONException e) {
                e.printStackTrace();
            }

此外,如果我添加db.deleteresponses initialy 然后它的工作如果我注释掉db.deleteresponses我再次得到??????。

为什么我的响应被正确编码我可以在调试时看到它,当它保存在sqlite表中时会搞砸了?

谢谢

1 个答案:

答案 0 :(得分:-1)

您的JSON对象是否需要与SQLite中的JSON完全一样存储?对base64进行编码会更容易,因为你不必担心字符集冲突,然后是用ASCII编码的所有字符。