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