批量文件编码格式转化

摘要:
后来发现,Windows的默认文件代码是GB2312,而Linux的默认文件编码是utf-8。可以在Windows下查看文本文件的中文源代码注释,即github上的默认页面代码格式为utf-8,而si中的文件代码格式为gb2312。Iconv-fgb18030-tutf-8file1.xt-offile2.txt-f表示要传输的文件的源编码格式,-t表示要传输文件的目标编码格式。
前言

  前段时间帮别人调试程序,在windows下能正常显示的输出,在linux下输出的全是乱码?后来发现windows默认的文件编码而是GB2312,而linux下的文件默认是utf-8,所以导致了这个问题。另一个问题就是用source insight看源码的问题,对windows下的文本文件都能看的中文源码注释,在si中居然是乱码,后来发现si居然不支持utf-8,一个这么通用的utf-8它居然不支持,这真是让si这个看代码神奇大打折扣了。今天遇到个问题就是如果我用si编写中午注释,然后将源文件上传到github上,可github上确显示的是乱码,即使调整网页的编码也不能解决,也就是说github上默认的网页编码格式是utf-8,而si中文件的编码格式是gb2312。

解决

  在网上看了下,有人给si写了个插件,能看utf-8格式的文件,结果我试了确不是,不知道是不是我的配置有问题。另外就是将utf-8格式的文件转换为gb2312格式的文件,这个在linux中有现成的工具,那就是iconv,使用方法如下:

iconv -f gb18030 -t utf-8 file1.txt -o file2.txt

  -f表示待转文件的源编码格式,-t表示待转文件的目标编码格式,file1.txt表示待转文件路径,-o指定目标文件路径。可以看出,这个工具使用起来很简单,不过就是不能成批的转换一个目录中的所有文件,所以我就在这个基础之上用shell脚本写了个成批转某个目录中的所有文件的编码格式,这个工具的使用语法和iconv差不多,具体如下:

myiconv -f gb18030 -t utf-8 test/

  这个工具只需要指定需要转换的目标路径(最好是绝对路径)就可以了。工具只能将源代码文件,如.c,.h,.cpp,.cc文件的格式进行转换,如果要支持更多的文件类型,可以直接自己修改。源码链接地址:https://github.com/cc1989/my_shell.git,主要代码如下:

foreachd()
{
    for file in $1/*    
    do
        if [ -d "$file" ]
        then 
            echo "进入$file"
            foreachd "$file"
        elif [ -f "$file" ]
        then
            #过滤掉一些不需要转换的文件
            #want_file="`echo $file | sed -n "/.*.(tar|gz|z|bz2|gzip|so|o|a|pdf|lo|sln)$/p"`"
            #只对源文件进行修改
            want_file="`echo $file | sed -n "/.*.(c|cc|cpp|h|cxx)$/p"`"
            #echo $want_file
            if [ $want_file ]
            then
                echo "转换$file"
                iconv -f $source_type -t $dest_type $file -o $file.b
                if [ $? -eq 0 ]
                then
                    rm "$file"
                    mv "$file.b" "$file"
                else
                    echo "$file转换失败"
                fi
            fi
        fi
    done
}
测试

批量文件编码格式转化第1张

免责声明:文章转载自《批量文件编码格式转化》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇[转]FPGA使用LVDS差分信号的一些注意事项倍福TwinCAT(贝福Beckhoff)常见问题(FAQ)-电机实际运行距离跟给定距离不一致怎么办,如何设置Scaling Factor下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

redhat7 升级openssh openssl

部署telnet,防止ssh启动失败  1、关闭防火墙或者开放23端口  2、安装启动服务,并开启root访问 yum install -y telnet-server.x86_64 yum install -y telnet.x86_64 yum install -y xinetd.x86_64 systemctl enable xinetd.ser...

禁止crontab -r清空定时任务列表误操作

关于crontab 1、附件cron.sh放/usr/bin目录下面 2、在/etc/bashrc文件末尾添加 alias crontab='/usr/bin/cron.sh'  或者在当前root用户下在~/.bashrc文件末尾添加:alias crontab='/usr/bin/cron.sh'  ==========================...

linux磁盘管理

计算机硬盘简介 硬盘是计算机主要存储媒介之一,linux系统中硬件设备相关配置文件存放在/dev下,IDE硬盘接口在Linux中设备名为/dev/hda,  SAS,SCSI,SATA硬盘接口在linux中设备名为sda,高效云盘硬盘接口会识别为/dev/vda等 文件存储在硬盘上,硬盘的最小存储单位叫做sector(扇区),每个sector存储512字节...

音视频与直播

音视频与直播 万人直播架构 直播产品种类 泛娱乐化直播 实时互动直播 泛娱乐化直播架构 实时互动直播架构 CDN网络 CDN网络为了解决用户访问网络资源慢而出现的。为什么访问慢: 访问链路长,比如从中国北部到南部 人为因素,运营商切割,电信用电信,联通用联通 CDN构成 边缘节点:用户从边缘节点上获取数据,让用户访问链路变短二级节点:主干网节...

Protobuf3 语法指南

  目录 [−] 定义一个消息类型 指定字段类型 分配标识号 指定字段规则 添加更多消息类型 添加注释 保留标识符(Reserved) 从.proto文件生成了什么? 标量数值类型 默认值 枚举 使用其他消息类型 导入定义 使用proto2消息类型 嵌套类型 更新一个消息类型 Any Oneof 使用Oneof Oneof 特性 向后兼...

CentOS---网络配置详解

一、配置文件详解在RHEL或者CentOS等Redhat系的Linux系统里,跟网络有关的主要设置文件如下: /etc/host.conf         配置域名服务客户端的控制文件 /etc/hosts             完成主机名映射为IP地址的功能 /etc/resolv.conf       域名服务客户端的配置文件,用于指定域名服务器的位...