linux txt文件中出现特殊字符‘^@‘

阅读: 评论:0

linux txt文件中出现特殊字符‘^@‘

linux txt文件中出现特殊字符‘^@‘

文章目录

  • 现象
    • c示例
    • environ文件
    • 具体原因
  • 解决

现象

使用curl命令从服务器中获取的是json字符串,将字符串存入文件中,文件类型成了data

# file 1.out 
1.out: data

vim打开文件后,出现如下乱码:

#^@fd^@dd^@e2^@c4^@e4^@c3#

cat -e也能看到这些字符。

c示例

经查,^@实际上对应c语言中的

// cat /tmp/1.c 
#include <stdio.h>
#include <string.h>int main(){FILE *fp = NULL;fp = fopen("/", "w+");char* str = "hello";fwrite(str, strlen(str)+1, 1, fp);fclose(fp);
}

编译并执行文件

# gcc -o /tmp/1 /tmp/1.c 
# /tmp/1
# cat / 
hello
# 这里字符串本身没换行,为了方便看,在这里手动换行了
# cat -e / 
hello^@

environ文件

environ文件也是有这种情况的。

# cat -e /proc/$$/environ
TERM=xterm^@HOME=/root^@SHELL=/bin/bash^@USER=root^@LOGNAME=root^@PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin^@XDG_SESSION_ID=22272^@

具体原因

暂时不清楚当事人在编辑这个文件时,做了什么操作,导致的这个情况。

解决

使用tr命令将其中的字符删除。

[root@nano-kvm-11 tmp]# cat /tmp/1.out |tr -d '' |cat -e
mysql.driverClassName&#sql.jdbc.Driver$
mysql.validationQuery=SELECT 1$
stWhileIdle=true$
stOnBorrow=false$
mysql.timeBetweenEvictionRunsMillis=30000$
mysql.minEvictableIdleTimeMillis=1800000$
veAbandoned=true$
veAbandonedTimeout=180$
mysql.logAbandoned=true$
stOnReturn=false$
mysql.poolPreparedStatements=false$
mysql.filters=stat$
$
#fddde2c4e4c3#$
s.db.url=$
s.db.username=$
s.db.password=$
s.db.maxWait=3000$
s.db.initialSize=10$
s.db.minIdle=10$
s.db.maxActive=100$
$
#ccb7fddde2c4e4c3#$

本文发布于:2024-01-29 03:00:56,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170646846112225.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:特殊字符   文件   linux   txt
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23