路径中具有非法字符;数据库字段中的?

最近遇到的一个报错,路径中具有非法字符,下载文件的时候报出来的。第一次遇到这个问题,看起来是下载路径有问题,有这么多文件,具体是哪个想起来就头大,因为疫情抱病在身,就拖延了几日。
查出来是文件名中有个?,导致复制文件出错。windows系统中,文件名,文件夹名中英文?是不允许存在的,中文?作为文件名是不会报错的。
文件名是入库的,通过库里的文件名来寻找文件,所以还是数据库中字段中含有?导致的。由于文件名不会有?,入库却有,最大的可能就是文件名中的空格,变成了?。
网上说是编码问题,在此记录下。原文链接:
https://blog.csdn.net/qq_42484429/article/details/105414025
UTF-8这种编码里面,存在一个特殊字符,其编码是“0xC2 0xA0”,转换成字符的时候,表现为一个空格,跟一般的半角空格(ASCII 0x20)一样,唯一的不同是它的宽度不会被压缩,因此比较多的被用于网页排版(如首行缩进之类)。而其他的编码方式如GB2312、Unicode之类并没有这样的字符,因此如果简单地进行编码转换,生成地GB2312/Unocode字符串中,这个字符就会被替换成为问号(ASCII ox3F)。此时如果进行写库、写文件之类,就会把问号直接写入了。
其实这根本就不是空格,它是一个特殊的符号。可是怎么看都像是空格,在页面的textarea里,QQ微信消息都是空格。最后我把它复制到了 “word” 里,奇怪事情的发生了,果然不是空格,坑死。
解决办法就是将这个"空格"替换成真的 空格
最后代码:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了