sqlite没有保存像à作为$agrave
sqlite not saving french accents like à as $agrave
当我将保存到我的数据库"C';est toutàfait juste"时,sqlite将删除&来自à,因为它可能无法处理utf-8。
var sql+="INSERT INTO Test(TestId,Text)Values(1,"C';est toutàfait juste。");
我试着用à代替$agrave,但我认为会有更好的解决方案。
有更好的方法来解决这个问题吗?
谢谢你的帮助。。。
更新
这是我创建sqlite数据库的代码:
function initDb($cordovaSQLite, logService) {
var defcorrect = $.Deferred();
try {
logger = logService;
db = window.sqlitePlugin.openDatabase({ name: "xxx.db", location: 0 }, successCB, errorCB);
$cordovaSQLite.execute(db, "CREATE TABLE IF NOT EXISTS Card(CardId UNIQUEIDENTIFIER PRIMARY KEY, CardSetId UNIQUEIDENTIFIER NOT NULL, FrontText NVARCHAR(4000) NOT NULL, BackText NVARCHAR(4000) NULL, ControlType INT NOT NULL, CardLevel INT NOT NULL, IsDirty bit NOT NULL, ChangedAt INT NOT NULL, Active bit default 'true')").catch(function (err) {
logService.writeAppError("00000000-0000-0000-0000-000000000000", "Could not init Table Card: ErrorNo: " + startGUIDLog + " ErrorMessage: " + err.message);
window.location = "#/error/" + startGUIDLog;
});
$cordovaSQLite.execute(db, "CREATE UNIQUE INDEX IF NOT EXISTS Card_Index on Card (CardId)").catch(function (err) {
logService.writeAppError("00000000-0000-0000-0000-000000000000", "Could not init INDEX Card_Index on Card: ErrorNo: " + startGUIDLog + " ErrorMessage: " + err.message);
window.location = "#/error/" + startGUIDLog;
});
defcorrect.resolve(db);
} catch (err) {
logService.writeAppError("00000000-0000-0000-0000-000000000000", "Could not init Database: ErrorNo: " + startGUIDLog + " ErrorMessage: " + err.message);
window.location = "#/error/" + startGUIDLog;
}
return defcorrect.promise();
}
用这个代码我插入数据
function saveCard(cardList, userId, db) {
var defcorrect = $.Deferred();
truncateTable("Card", db, userId).done(function () {
if (cardList.length !== 0) {
var sql = "";
cardList.forEach(function (card) {
sql += "INSERT INTO Card(CardId,CardSetId,FrontText,BackText,ControlType,CardLevel,IsDirty,ChangedAt,Active) VALUES (" + JSON.stringify(card.CardId) + "," + JSON.stringify(card.CardSetId) + "," + JSON.stringify(Card.FrontText) + "," + JSON.stringify(Card.BackText) + "," + card.ControlType + ", " + card.CardLevel + ",'" + card.IsDirty + "'," + card.ChangedAt + ",'" + card.Active + "');";
});
var successFn = function (count) {
logService.writeAppInfo(userId, "Sync Save Card Successfully imported " + count + " SQL statements to DB");
defcorrect.resolve();
};
var errorFn = function (error) {
logService.writeAppError(userId, "Sync Save Card Error: " + error);
$('#statusOverview').hide();
$('#syncError').show();
};
var progressFn = function (current, total) {
$("#statusText").text("Importiere " + current + "/" + total + " Karten");
};
cordova.plugins.sqlitePorter.importSqlToDb(db, sql, {
successFn: successFn,
errorFn: errorFn,
progressFn: progressFn,
batchInsertSize: 500
});
} else {
defcorrect.resolve();
}
});
return defcorrect.promise();
}
在调试模式中,我可以看到,数据以正确的方式出现,如"C';est toutgave;fait juste"。插入后,当我读出这些数据时,它是这样的:"C'!est toutgageve;fait juste。"
对我来说,这个解决方案奏效了:
var elemfolderName = document.createElement('textarea');
elemfolderName.innerHTML = "C'est tout à fait juste.";
var folderName = elemfolderName.value;
然后我将folderName保存到sqlite3db。。。
相关文章:
- 在自定义mean.io包中使用angular-chart.js作为依赖项
- 在POST中将html表作为csv提交
- 获取@ResponseBody的一部分作为主干和Spring MVC控制器之间的参数
- 如何将PDF作为二进制文件传递到window.open()
- 函数未将值作为参数传递
- 使用带括号的图像URL作为jQuery的背景
- 绑定时将Parsley minlength消息作为选项传递时,未对其进行自定义
- 在JavaScript中使用对象作为属性键
- 将日期时间作为 JSON 发送将无法在我的视图中正确显示
- 我可以在Javascript/jQuery中使用一个变量作为键吗
- 浮动图像左作为背景-css
- 我是否可以检测到javascript正在被卸载(作为调试模式)
- D3嵌套组作为x轴
- 将Json作为变量加载到jsTree中
- 作为一个二维数组,从ajax接收
- 如何在router.get()方法中传递url作为参数
- javascript:作为对象或函数传递
- 试图将onChange函数作为道具传递给GrandChlidren,结果是TypeError:这是未定义的
- 如何在master中调用细节网格作为单击事件
- sqlite没有保存像à作为$agrave