无法通过json接收到Android的utf-8字符

无法通过json接收到Android的utf-8字符,android,python,json,utf-8,Android,Python,Json,Utf 8,我正在构建一个简单的Android应用程序,它通过json将项目发送到python web服务,以存储在sqlite数据库中。这一部分很好用,当被召回时,物品具有正确的“åäö”字符 当我将这些项目放在json中以返回到应用程序时(使用下面的代码),我不再那么确定了。而不是'ö'I get'\xc3\xb6',我相信这将是utf-8表示 connection = sqlite3.connect('database.db') connection.text_factory = st

我正在构建一个简单的Android应用程序,它通过json将项目发送到python web服务,以存储在sqlite数据库中。这一部分很好用,当被召回时,物品具有正确的“åäö”字符

当我将这些项目放在json中以返回到应用程序时(使用下面的代码),我不再那么确定了。而不是'ö'I get'\xc3\xb6',我相信这将是utf-8表示

    connection = sqlite3.connect('database.db')
    connection.text_factory = str
    cursor = connection.cursor()

    cursor.execute("SELECT item, number FROM Items")
    rows = cursor.fetchall()
    jsobj = []

    for row in rows:
    jsobj.append({'number':row[1], 'item':row[0]})
当我在我的应用程序中解析json对象时,我无法将'\xc3\xb6'转换回'ö'

这是工作中的Android代码:

    HttpClient client = new DefaultHttpClient();
    HttpGet post = new HttpGet(super.url);

    HttpResponse response = client.execute(post);

    HttpEntity entity = response.getEntity();
    InputStream content = entity.getContent();
    BufferedReader reader = new BufferedReader(new InputStreamReader(content, "UTF-8"));

    JSONArray itemsOnServer = new JSONArray();
    itemsOnServer = new JSONArray(reader.readLine());
    return itemsOnServer;
结果发送到另一个函数:

    ArrayList<Vara> varor = new ArrayList<Vara>();
    String vara = "";
    int antal;

    for (int i = 0; i < json.length(); i++) {
        JSONObject object;
        try {
            object = json.getJSONObject(i);
            try {
                try {
                    vara = new String(object.getString("vara").getBytes("ISO-8859-1"), "utf-8");
                } catch (UnsupportedEncodingException e) {
                    e.printStackTrace();
                }   System.out.println(vara);
                antal = object.getInt("antal");
                varor.add(new Vara(vara, antal));
            } catch (JSONException e) {
                e.printStackTrace();
            }
        } catch (JSONException e) {
            e.printStackTrace();
        }

    }

    return varor;
ArrayList varor=new ArrayList();
字符串vara=“”;
int antal;
for(int i=0;i

除了特殊的角色,一切都很好。请帮帮我,我快发疯了

b'\xc3\xb6'
是一个bytestring,可以解码为Unicode字符串,其中包含一个:


默认情况下,如果从代码中删除
connection.TEXT\u factory=str
,则应接收
TEXT
对象的Unicode字符串。

代码中的
getBytes(“ISO-8859-1”)
的目的是什么?json文本通常是使用utf-8字符编码发送的。只是我没有什么想法,试图得到某种可能给我线索的反应/错误。应该在问题中删除它。谢谢!忽略了这一点。现在已将问题转移到应用程序:)
>>> b'\xc3\xb6'.decode('utf-8')
u'\xf6'