SQL语句中不可见字符M-oM-;M-?导致语句执行失败

最近遇到由于不可见字符M-oM-;M-?导致语句执行失败,做一下记录。

“M-oM-;M-?”不可见字符导致SQL语句执行失败

报错信息如图:
20221008104659

肉眼从SQL语句上看,并不能发现错误,同时也将DM管理工具中的“显示空白字符”开启,还是无法发现异常。
这种情况,一般就要怀疑是否是不可见字符导致,对于普通的文本编辑器一般无法直接看到不可见字符,但是通过一些高级的编辑器或者是Linux系统上的cat等命令相关选项是可以发现(如果只是直接cat文件也是无法看到不可见的字符)。

排查如下

这里直接将文本内容保存到txt文件,然后拷贝到Linux系统中,使用cat -v xxx.txt | more 进行查看。如下:
20221008105437
可以看到CREATE前面会多出一串奇怪的字符,这个就是导致执行失败的不可见字符。
这个字符串是由于使用UTF-8带BOM编码格式导致。
20221008110418
解决办法就是将文件编码格式转成UTF8无BOM编码格式。

解决办法

方法一:使用IDE工具或者高级编辑器工具将文件编码格式转换成无BOM格式
方法二:如果只是单个文件可以使用vim 进行修改,shift+: 然后 set nobomb
方法三:多个文件可以使用shell脚本使用sed命令进行替换,注意这里不能直接使用“M-oM-;M-?”进行替换,需要使用字符对应十六进制进行替换。

sed -i '1s/^\xef\xbb\xbf//' no1.txt

可以通过od命令指定以十六进制显示文件内容,查看对应的十六进制,命令为:

#以16进制显示文件内容
od -tx1 no1.txt | more

20221008111908
如果无法确定字符位置和个数,也可以通过od命令以ASCII码的形式显示文件内容:

od -tc no1.txt | more 

20221008112049

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值