diff --git a/ide/src/trace/database/TempSql.ts b/ide/src/trace/database/TempSql.ts index a51d3a0d3d6f126ae90fe6957f558f98f4845de1..837a58e61428d8267f68bc0e13420512de306339 100644 --- a/ide/src/trace/database/TempSql.ts +++ b/ide/src/trace/database/TempSql.ts @@ -398,7 +398,4 @@ let delete_callstack_binder_data = `DELETE or name = 'binder transaction async' or name = 'binder async rcv';`; -let temp_init_sql_list = [temp_query_process]; -let translateJsonString = (str: string): string => { - return str.replace(/[\t\r\n]/g, '').replace(/\\/g, '\\\\'); -}; +let temp_init_sql_list = [temp_query_process]; \ No newline at end of file diff --git a/ide/src/trace/database/TraceWorker.ts b/ide/src/trace/database/TraceWorker.ts index 595f0ea9ce3a81dcc6736f5142f085e399ba9676..09b45c6923fff290a05e2923cb082250ea0adadf 100644 --- a/ide/src/trace/database/TraceWorker.ts +++ b/ide/src/trace/database/TraceWorker.ts @@ -41,7 +41,7 @@ function clear() { arr = undefined; } if (headUnitArray) { - headUnitArray = undefined; + headUnitArray = undefined; } if (bufferSlice) { bufferSlice.length = 0; @@ -109,6 +109,13 @@ let merged = () => { }); return mergedArray; }; + +let translateJsonString = (str: string) => { + return str // .padding + .replace(/[\t|\r|\n]/g, '') + .replace(/\\/g, '\\\\'); +}; + let convertJSON = () => { try { let str = dec.decode(arr); @@ -116,7 +123,15 @@ let convertJSON = () => { str = str.substring(str.indexOf('\n') + 1); if (!str) { } else { - let parse = JSON.parse(translateJsonString(str)); + let parse; + let tansStr = translateJsonString(str); + try { + parse = JSON.parse(translateJsonString(str)); + } catch { + tansStr = tansStr.replace(/[^\x20-\x7E]/g, '?'); //匹配乱码字符,将其转换为? + parse = JSON.parse(tansStr); + } + let columns = parse.columns; let values = parse.values; for (let i = 0; i < values.length; i++) { diff --git a/ide/src/trace/database/logic-worker/ProcedureLogicWorkerCommon.ts b/ide/src/trace/database/logic-worker/ProcedureLogicWorkerCommon.ts index 3dbccbee0f1b885da6f004a60c6a4da4b73c9005..b489a014ff42fd7c0412a214a0b67681625574f8 100644 --- a/ide/src/trace/database/logic-worker/ProcedureLogicWorkerCommon.ts +++ b/ide/src/trace/database/logic-worker/ProcedureLogicWorkerCommon.ts @@ -344,7 +344,7 @@ export let postMessage = (id: any, action: string, results: Array) => { results.length = 0; } }; -let translateJsonString = (str: string): string => { +export let translateJsonString = (str: string): string => { return str // .padding .replace(/[\t|\r|\n]/g, '') .replace(/\\/g, '\\\\'); @@ -356,7 +356,14 @@ export let convertJSON = (arrBuf: ArrayBuffer | Array) => { string = string.substring(string.indexOf('\n') + 1); if (!string) { } else { - let parse = JSON.parse(translateJsonString(string)); + let parse; + let tansStr = translateJsonString(string); + try { + parse = JSON.parse(translateJsonString(string)); + } catch { + tansStr = tansStr.replace(/[^\x20-\x7E]/g, '?'); //匹配乱码字符,将其转换为? + parse = JSON.parse(tansStr); + } let columns = parse.columns; let values = parse.values; for (let i = 0; i < values.length; i++) {