解决mysql保存路径斜杠或者反斜杠消失的问题

起因

今天在做一个小项目的时候出现一个错误,我上传音乐文件渲染到前端页面的时候,需要将音乐文件的全路径写入到数据库中。例如我有一首歌的路径是这样的:E:\\CloudMusic\\music\\music\\キセキ(奇迹)-GreeeeN.mp3”,然而当我选择音乐的时候,写入数据库的路径却是这样的:
在这里插入图片描述
嗯???我直接黑人问号脸?
你这斜杠有问题啊。
开玩笑,这些都是我本地路径里面的斜杠,我还能给你假斜杠蛋子吗?
好了不开玩笑,我在上网搜寻的一些相似的问题的时候,发现很多人都是这样的。那么为什么会这样子呢?

原因

  • 主要问题啊还是出现在‘\’本身身上,因为我们做程序员的都知道,‘\’本身在编程语言中就是一个转义符,如果你想要在编程语言中显示‘\’的话,你就必须先用斜杠转义一下,也就是‘\\’用两条斜杠,来表示一条斜杠。
  • 那么问题来了。我上面的那条路径明明是两条些斜杠啊,为什么都被吞了呢?
  • 解答:很简单,如果你使用java或者其他编程语言来插入数据库的话,那么Java转义会自动剔除一个‘\’,路径就变成了“E:\CloudMusic\music\music\キセキ(奇迹)-GreeeeN.mp3”,而当Java保存这条数据进mysql的时候,mysql也会剔除一个‘\’(这是因为mysql为Java语言实现,它不认识单斜杠,会把其理解为转义符),所以最终数据库中保存的路径是:“E:CloudMusicmusicmusicキセキ(奇迹)-GreeeeN.mp3”
  • 所以,当你插入的时候,需要看看数据经过几手通道

解决

  • 我使用的方法呢就是将那一串路径当作字符串,使用字符串的replaceAll(“需要替代的值”,“替代的值”),将所有斜杠转义成有斜杠的样子
path = path.replaceAll("\\","\\\\") //path代表你路径的字符串

因为是两条斜杠,所以需要四条才能转义成两条。

  • 或者我们可以用反斜杠代替,但同样需要两条转义符"\",来保证反斜杠传到mysql中
path = path.replaceAll("\\","\\/")//path代表你路径的字符串

解决后我的数据库如下显示:
在这里插入图片描述
而音乐文件也可以正常渲染上去了哈哈,祝各位不会遇到我这么让人无语的问题,OK继续码代码去啦。

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值