You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows控制台SQLite与CGI网站中带换行文本的存储处理问题

解决方案

核心思路是将解码后的文本按换行符分割为段落(包括空段落),给每个段落加上单引号(同时转义段落内的单引号),再用|| char(10) ||连接所有段落。这种方式天然支持连续换行的场景,因为连续换行会产生空段落,最终生成符合要求的格式。

修改后的script.cmd中的PowerShell命令如下:

powershell.exe -noprofile "Add-Type -AssemblyName System.Web; $decoded = [System.Web.HttpUtility]::UrlDecode($Input); $lines = $decoded -split '\r?\n'; $quotedLines = $lines | ForEach-Object { '''' + ($_ -replace '''', '''''') + '''' }; $joined = $quotedLines -join ' || char(10) || '; Write-Output $joined"

代码说明

  1. URL解码:使用[System.Web.HttpUtility]::UrlDecode处理POST传入的编码文本。
  2. 分割段落:用-split '\r?\n'分割文本,同时兼容Windows(\r\n)和Unix(\n)换行格式。
  3. 转义与加引号:对每个段落,将单引号替换为两个单引号(SQLite的转义规则),再包裹在单引号中。
  4. 连接段落:用|| char(10) ||连接所有带引号的段落,生成符合SQLite插入语法的字符串。

示例验证

  • 输入文本:Hello\r\nworld → 输出:'Hello' || char(10) || 'world'
  • 输入文本:line1\r\n\r\nline2 → 输出:'line1' || char(10) || '' || char(10) || 'line2'(连续换行生成了正确的|| char(10) || char(10) ||片段)
  • 输入文本:带'单引号'的行\r\n另一行 → 输出:'带''单引号''的行' || char(10) || '另一行'(单引号已正确转义)

内容的提问来源于stack exchange,提问作者user2956477

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 19:43:37