From 3cf20c866598ddeddfedbc83cff3442de0fe1df3 Mon Sep 17 00:00:00 2001 From: zhangzepeng Date: Wed, 28 Jun 2023 14:37:08 +0800 Subject: [PATCH] =?UTF-8?q?Fix:=E5=85=BC=E5=AE=B9=E4=B9=B1=E7=A0=81?= =?UTF-8?q?=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zhangzepeng --- ide/src/trace/database/TempSql.ts | 5 +---- ide/src/trace/database/TraceWorker.ts | 19 +++++++++++++++++-- .../ProcedureLogicWorkerCommon.ts | 11 +++++++++-- 3 files changed, 27 insertions(+), 8 deletions(-) diff --git a/ide/src/trace/database/TempSql.ts b/ide/src/trace/database/TempSql.ts index a51d3a0d..837a58e6 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 595f0ea9..09b45c69 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 3dbccbee..b489a014 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++) { -- Gitee