加入收藏 | 设为首页 | 会员中心 | 我要投稿 我爱制作网_沈阳站长网 (https://www.024zz.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

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

发布时间:2023-01-14 13:35:00 所属栏目:Linux 来源:
导读:  肉眼从SQL语句上看linux语句,并不能发现错误,同时也将DM管理工具中的“显示空白字符”开启,还是无法发现异常。

  这种情况,一般就要怀疑是否是不可见字符导致,对于普通的文本编辑器一般无法
  肉眼从SQL语句上看linux语句,并不能发现错误,同时也将DM管理工具中的“显示空白字符”开启,还是无法发现异常。
 
  这种情况,一般就要怀疑是否是不可见字符导致,对于普通的文本编辑器一般无法直接看到不可见字符,但是通过一些高级的编辑器或者是Linux系统上的cat等命令相关选项是可以发现(如果只是直接cat文件也是无法看到不可见的字符)。
 
  这里直接将文本内容保存到txt文件,然后拷贝到Linux系统中,使用cat -v xxx.txt | more 进行查看。 
 
  可以看到CREATE前面会多出一串奇怪的字符,这个就是导致执行失败的不可见字符。
 
  这个字符串是由于使用UTF-8带BOM编码格式导致。
 
  解决办法就是将文件编码格式转成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
 

(编辑:我爱制作网_沈阳站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!