我无法在Android中使用sqlite保存像umlaute这样的特殊字符(例如Ä,Ü,ö等)。键入“ä”会产生“\ u00E4”。
我已经尝试使用以下代码在数据库中保存字符串,但没有帮助:
ContentValues values = new ContentValues();
String content = comment.getContent().toString();
byte[] chars = content.getBytes("UTF-8");
String utf8Content = new String(chars, "UTF-8");
values.put(DBHandler.CONTENT,utf8Content);
答案 0 :(得分:0)
试试这个
SQLiteDatabase.execSQL("PRAGMA ENCODING=UTF-8;");
或您需要的等效编码
答案 1 :(得分:0)
据我所知,values.put
接受"ä"
之类的字符。出于某种原因,将其转换为SQLite
之类的Unicode字符后,可以将其保存在"\u00E4"
中。在这种情况下,只需将其保存在SQLite
中,然后在检索该数据时将"\u00E4"
再次转换为"ä"
。这是返回从Unicode字符转换的字符的方法。
public String getCharacterFromUnicode (String unicodeChar){
String returnString = null
try {
byte[] utf8 = unicodeChar.getBytes("UTF-8");
returnString = new String(utf8, "UTF-8");
}catch (Exception ex){
}
return returnString;
}
将"\u00E4"
返回"ä"
。
更新:
如果您不确定哪些部分转换为Unicode,请使用Apache commons-lang库来逃避这些部分,
myString = org.apache.commons.lang.StringEscapeUtils.unescapeJava(myString);