文件的名字带有特殊符号下载报错问题

在这里插入图片描述
在这里插入图片描述
其中encodeURI()主要用于整个URI(例如,http://www.jxbh.cn/illegal value.htm),而encodeURIComponent()主要用于对URI中的某一段(例如前面URI中的illegal value.htm)进行编码。它们的主要区别在于,encodeURI()不会对本身属于URI的特殊字符进行编码,例如冒号、正斜杠、问号和井字号;而encodeURIComponent()则会对它发现的任何非标准字符进行编码。

 download(url) {
      const link = document.createElement('a')
      //对文件名进行转换编码,一些编码不能在url中传输,需要转换
      let urlArr = url.split('/')
      urlArr[urlArr.length - 1] = encodeURIComponent(urlArr.pop())
      link.href = urlArr.join('/')
      link.target = '_blank'
      link.click()
    }

参考:
https://blog.csdn.net/HXNLYW/article/details/84400724
https://www.w3school.com.cn/tags/html_ref_urlencode.asp

在使用 Qt 结合 MySQL 执行 SQL 语句时,如果你发现字段名称包含下划线 `_` 导致报错,可能并非是因为下划线本身引起的问题。实际上,在 SQL 中,字段名是可以合法地包含下划线的。但如果出现类似情况,请考虑以下几个方面: ### 可能原因: 1. **字段名冲突**:某些时候数据库系统可能会将带下划线的标识符误解为保留字或者是某种内部结构的一部分。尽管这种情况较少发生,但为了保险起见,你可以用反引号 `` ` 字段名` `` 将其包裹起来明确指明这是一个普通的列名。 2. **编码问题**:如果表或字段名字中有非 ASCII 字符,并且这些字符与下划线组合在一起,有可能触发了编码相关的异常。确保整个系统的字符集设置一致(如全部设为 UTF-8),并且确认客户端和服务端之间的传输也没有丢失信息。 3. **SQL 预处理中的问题**:当利用绑定变量或者其他高级功能构造动态 SQL 时,如果没有正确引用涉及的元素就可能导致意外的结果。例如忘记添加必要的分隔符或者错误匹配占位符位置都会造成这样的结果。 4. **Qt 的 QSqlQuery API 使用不当**:虽然理论上只要 SQL 正确就可以顺利执行,但是如果不恰当地调用了诸如 prepared() 方法之类的辅助函数,则仍有机会破坏原生查询文本格式化过程而引发错误。 5. **权限不足**:访问特定模式下的对象需要足够高的授权等级才能成功完成操作;否则即使是看似正确的语法也仍然会被拒绝掉。 --- ### 推荐解决方案: 1. 直接给每个敏感部位加上标示保护层——即把所有含有特殊符号(不仅仅是_)的部分都放进 backticks里。 ```sql SELECT `column_with_underscore` FROM mytable; ``` 2. 检查数据源初始化阶段所指定的各项参数设定是否合理准确; 3. 审核应用程序生成最终发送出去的实际 SQL 行程记录日志文件查看是否存在其他隐形隐患; 4. 如果确实遇到棘手状况难以单独排查清楚的话不妨尝试切换成另一种 ORM Framework 或者纯 JDBC 方式对比测试一番找出症结所在之处。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值