SQLite/Android-使用重音从SQL文件插入值
我正在尝试用SQLite数据库设置我的应用程序,并用一些值填充同一个数据库。要填充表格,我有两种方法:SQLite/Android-使用重音从SQL文件插入值,android,database,sqlite,Android,Database,Sqlite,我正在尝试用SQLite数据库设置我的应用程序,并用一些值填充同一个数据库。要填充表格,我有两种方法: 使用我的对象DAO中的.insert()方法(值在Java代码中定义) 读取放置在Assets文件夹中的.sql文件,并使用以下命令执行每一行: execSQL(新字符串(缓冲区,“UTF-8”) 使用第一个选项,我可以插入像“sé”、“são”、“ç”这样的值,当我从DB中检索到相同的值时,我完全按照我编写它们的方式得到它们 使用第二个选项(从文件读取),该值将插入符号“?”,例如:“s?”
PRAGMA encoding = "UTF-8";
INSERT INTO [DEPARTMENT] ([depID], [DEP_NAME]) VALUES (111, 'Informática');
INSERT INTO [DEPARTMENT] ([depID], [DEP_NAME]) VALUES (222, 'Cívil');
这是我读取文件的方法:
private void insertValues(boolean fromFile) throws IOException {
if (!fromFile) {
// option one working...
} else {
InputStream script = this.getAssets().open("sql_script.sql");
byte[] buffer = new byte[1024];
for (int byteRead = script.read(); byteRead != -1; byteRead = script
.read()) {
// resets the buffer
Arrays.fill(buffer, (byte) 0);
// reads a SQL statement to the buffer
for (int i = 0; byteRead != -1 && i != 1024; byteRead = script
.read(), i++) {
buffer[i] = (byte) byteRead;
if (byteRead == ';')
break;
}
// execute the SQL statement from the buffer
if (byteRead != -1)
db.execSQL(new String(buffer, "UTF-8"));
}
}
}
我试图使用
新字符串(buffer,“UTF-8”)
,但也不起作用 .sql文件中使用的编码是什么?我的sql文件以:PRAGMA encoding=“UTF-8”开头;不指定文件保存的编码;它只是告诉sqlite。您不需要自己指定它。让Android SQLLite API为您处理编码设置。好的,所以我将我的文件编码为UTF-8,但我得到的结果与之前相同:“?”而不是重音字母。@laalto您是对的,我检查了,甚至我在一些编辑器(记事本++)中将编码文件修改为UTF-8,它作为默认编码导入eclipse(Cp1252)。我转到.sql文件内的资产->属性->文本文件编码->其他->UTF-8。解决了我的问题!谢谢