我在使用Android从我的SQLite数据库中获取“特殊”/德语字符(即“öäüß”)时遇到了困难。
我正在使用SQLiteOpenHelper类来访问数据库,字符显示为空格或矩形。
我可以在命令行中选择字段并正确显示,所以我假设它们存储正确吗?但是,我使用了许多GUI SQLite客户端(SQLite数据库浏览器,sqliteman,Firefox的SQLite客户端),并且没有一个成功地正确显示字符,所以这看起来很奇怪,但真正的问题是他们没有在我的应用中正确显示。
我尝试添加:
System.setProperty("file.encoding", "UTF-8")
和
System.setProperty("file.encoding", "ISO-8859-1")
我不完全确定这意味着什么,但我在相关帖子中看到了它,所以我会把它包括在内:
SELECT hex('ä');
返回84
,SELECT typeof(data)
返回text
。
非常感谢!
答案 0 :(得分:0)
84
不是ä
的正确UTF-8编码。
Windows命令提示符不能正确支持UTF-8。 如果您从那里输入数据,编码将是错误的。
使用.read
命令从UTF-8编码的文件中读取数据,或使用任何正确处理UTF-8的GUI工具输入数据。