栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

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

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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 
#include 
 
int main(){
   FILE *fp = NULL;
   fp = fopen("/tmp/test.txt", "w+");
   char* str = "hello";
   fwrite(str, strlen(str)+1, 1, fp);
   fclose(fp);
}

编译并执行文件

# gcc -o /tmp/1 /tmp/1.c 
# /tmp/1
# cat /tmp/test.txt 
hello
# 这里字符串本身没换行,为了方便看,在这里手动换行了
# cat -e /tmp/test.txt 
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=com.mysql.jdbc.Driver$
mysql.validationQuery=SELECT 1$
mysql.testWhileIdle=true$
mysql.testonBorrow=false$
mysql.timeBetweenEvictionRunsMillis=30000$
mysql.minEvictableIdleTimeMillis=1800000$
mysql.removeAbandoned=true$
mysql.removeAbandonedTimeout=180$
mysql.logAbandoned=true$
mysql.testonReturn=false$
mysql.poolPreparedStatements=false$
mysql.filters=stat$
$
#fddde2c4e4c3#$
mysql.cms.db.url=$
mysql.cms.db.username=$
mysql.cms.db.password=$
mysql.cms.db.maxWait=3000$
mysql.cms.db.initialSize=10$
mysql.cms.db.minIdle=10$
mysql.cms.db.maxActive=100$
$
#ccb7fddde2c4e4c3#$
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/335119.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号