精华内容
下载资源
问答
  • Linux查看文件编码格式

    千次阅读 2020-05-14 11:02:56
    linux查看文件编码格式 file命令 首先查看file命令的help,file --help 阿斯顿 linux文件编码转换

    linux查看文件编码格式

    1.file命令

    首先查看file命令的help,file --help,里面有详情的参数说明。

    使用file 命令查看文件的编码格式

    [root@dep-184 /]# file 1.txt

    1.txt: ISO-8859 text

    2.vim 命令

    使用vim命令进入文件 1.txt,然后在使用 “:set fileencoding” 查看文件当前展示的编码格式(这里必须确保展示内容无乱码,才可以得到内容真实的编码格式),我这里的文件1.txt 内容实际是gbk,而文件保存时的编码格式是ISO-8859,如下:

    不加任何编码格式进入文件,则文件编码格式是latin1(Latin1是ISO-8859-1的别名,有些环境下写作Latin-1)

    [root@dep-184 /]# vim 1.txt

    文件内容

    使用:set fileencoding

    指定文件展示的编码格式进入文件,此时展示的内容是正常的,但是使用:set fileencoding 查看是cp936(cp936就是指系统里第936号编码格式,即GB2312的编码)

    [root@dep-184 /]# vim "+e ++enc=gbk" 1.txt

    文件内容

    使用:set fileencoding

    最后在试一下指定utf-8进入文件的情况,查看的内容是乱码的,使用:set fileencoding 查看是utf-8。

    [root@dep-184 /]# vim "+e ++enc=utf-8" 1.txt

    文件内容

    使用:set fileencoding

    小结:从以上三种情况来看,进入文件使用:set fileencoding 查看编码时,编码格式是根据终端显示的编码格式来确定的,使用哪种编码方式进入文件展示文件那天,则就是哪种编码格式,即你使用正确的编码格式进入文件,文件无乱码则使用这种方式查看编码格式就是正确的。

    3.enca命令

    使用enca可以直接查看文件内容的编码格式,如下

    [root@dep-184 /]# enca  1.txt 

    Simplified Chinese National Standard; GB2312

    enca安装参考:下载地址https://dl.cihar.com/enca/enca-1.19.tar.gz

    解压:tar -xvf enca-1.19.tar.gz

    进入目录

    ./configura

    安装:

    make

    make install

    enca 还有其他的参数可以设置,查看enca --help

     

    linux文件编码转换

    1.vim 命令

    在vim中使用 :set fileencoding=xxx 来转换文件的编码格式,这里vim文件时需要注意,必须指定编码进入文件或者直接进入文件时内容无乱码,如下:

    [root@dep-184 /]# vim "+e ++enc=gbk" 1.txt

    文件内容

    转换编码格式,回车无错误则转换成功,最后 :wq保存退出。

    查看转换后的编码格式

    [root@dep-184 /]# enca 1.txt

    Universal transformation format 8 bits; UTF-8

    如果不指定编码格式进入文件会出现什么情况呢,以下是我测试的结果:

    [root@dep-184 /]# vim 1.txt

    文件内容

    出现错误,转换失败

    2.iconv 命令

    这里必须知道文件内容的真实编码,转换的时候才不会出现乱码,如下

    转换命令,比如将一个UTF-8 编码的文件转换成GBK编码(此处应该知道文件内容的正确编码)

    iconv -f GBK -t UTF-8 1.txt -o 2.txt

     

    以上是我在测试的时候总结的,如果有错误的地方欢迎小伙伴指正,谢谢!

    展开全文
  • Linux文本文件编码问题

    千次阅读 2016-02-05 15:12:38
    早上试着从Windows拷贝了几份代码到Linux想练练vim操作,打开一看代码块中文的注释全是乱码-.- ...Linux中默认使用utf-8编码方式. Windows文本文件大多数是GBK. 当你在保存文本文件的时候会默认提示采用ANSI编码

    早上试着从Windows拷贝了几份代码到Linux想练练vim操作,打开一看代码块中文的注释全是乱码-.-
    后来知道原来是
    Linux中默认使用utf-8编码方式.
    Windows文本文件大多数是GBK.
    当你在保存文本文件的时候会默认提示采用ANSI编码:
    这里写图片描述
    因此在Linux下会有读取异常现象.
    网上搜了一下试了几个方法,都没解决,试过
    1.用convmv进行文件名编码的转换,可以将文件名从GBK转换成UTF-8编码,或者从UTF-8转换到GBK。手动在线安装转化还是没有见效,猜测它转化的逻辑是:转化 -from A -to B 你要转化成B,A的格式也要知道,所以你还要去了解A的原本编码.
    2.直接通过设置改变vim的编码读取方式,也没成功+.+
    显而易见:
    1. 解决方法1是把你要在Linux读取的文件以utf-8格式保存,之后就可以正常读取中文
    这里写图片描述
    这里要感谢这位仁兄
    http://blog.csdn.net/seuxiaoqi/article/details/5577195 提供的解决方案.

    不过他表示:解决方法1治标不治本,因为你以后每次从windows拷贝一个文件都要重新改变保存编码格式,太过麻烦,有一个更加直接的办法,就是让Vim自动识别判断文件读取的编码方式.

    先知道一个命令,就是在Linux命令终端 输入vim + 文本文件名 以Vim模式打开查看或者新建原本不存在的文件
    这里写图片描述
    接着在vim模式切换到命令行模式 输入”::set fileencoding“可以查看当前文件编码格式.
    在Windows以utf-8保存的文件可以看到如下
    这里写图片描述
    结果确实是:
    这里写图片描述
    如果是其它格式则很可能会出现乱码现象.这个是具体原因.
    解决方法2:

    ~/.vimrc(在/etc目录下面) 文件中添加以下内容:
    set encoding=utf-8 fileencodings=ucs-bom,utf-8,cp936

    在我的系统里面这个.vimrc文件不存在,所以我用Vim方式新建了一个(命名为.vimrc)并且按”i”进入insert模式打入上面这段设定:set encoding=utf-8 fileencodings=ucs-bom,utf-8,cp936之后输入 :wq!“保存退出.在此之后打开文本显示就正常了.
    因为

    “其中encoding是vim的默认显示编码格式,fileencodings是vim打开文件时检测的编码格式,存在这种类型的编码即转换为utf-8 编码。
    这样,就可以让vim自动识别文件编码(可以自动识别UTF-8或者GBK编码的文件),其实就是依照fileencodings提供的编码列表尝试,如 果没有找到合适的编码,就用latin-1(ASCII)编码打开。”

    即使测试文件格式为“cp936”还是会自动识别,因此中文注释就没有显示错误了.
    这里写图片描述

    展开全文
  • Linux文件编码格式转换

    千次阅读 2014-11-03 10:36:57
    最近把项目放到github上,但是发现代码中注释的中文部分有些是乱码,检查后发现是因为我的Centos装在虚拟机上,而我是在... 所以希望在Linux上使用命令来批量转换编码格式。    查了资料后发现可以使用iconv命令。

            最近把项目放到github上,但是发现代码中注释的中文部分有些是乱码,检查后发现是因为我的Centos装在虚拟机上,而我是在Windows环境下通过UE来写代码的,而UE默认是使用ASCII编码。

            所以希望在Linux上使用命令来批量转换编码格式。

     

            查了资料后发现可以使用iconv命令。

     

            首先使用 file 命令来检测文件的类型

            例如:filetest.cpp

            输出:ISO-8859 Cprogram text

     

            iconv命令的参数说明:

     

            -l    列出所有已知的字符集

            -f    原始文本编码

            -t    输出文本编码

            -o    输出文件名

            -s    关闭警告

     

    例子:

            iconv-f GB2312 -t UTF-8 test.cpp > test_utf.cpp

            因为iconv默认输出到标准输出,所以我们需要重定向到一个其他文件。(这里不能重定向到自身,否则会清空文件内容)

     

            如果想要把输出内容直接输出到当前文件,可以这样用:

            iconv-f GB2312 -t UTF-8 -o test.cpp test.cpp


        附上我自己用的编码转换脚本 iconvfa.sh :

        可以转换单个文件: ./iconvfa.sh [file_name]

        以递归方式地方式转换文件夹下所有文件: ./iconvfa.sh -R [dir_name]


    #!/bin/env bash
    
    function show_help
    {
        echo "Usage:"
        echo "  iconvfa.sh [option] [file|dir]"
        echo -e "  from GB2312 to UTF-8, the old file will be replaced by the new converted file\n"
        echo "Options:"
        echo "  -R: convert files recursively, the following parameter should be the directory name"
    }
    
    # param 1: directory name
    function convert_rescursive()
    {
       local dir_path=`echo $1 | sed 's/\(.*\)\/$/\1/g'`
       local dir_names=`ls ${dir_path} -l | awk '/^d/{print $NF}'`
       
       # convert files in this directory
       local file_names=`ls ${dir_path} -l | awk '/^-/{print $NF}'`
       for file in ${file_names}
       do
           iconv -f ${from_code} -t ${to_code} ${dir_path}/${file} &> /dev/null
           if [ $? == 0 ]; then
               iconv -f ${from_code} -t ${to_code} < ${dir_path}/${file} > $@.$$$$
               cp $@.$$$$ ${dir_path}/${file}
               rm -f $@.$$$$
               echo "File ${dir_path}/${file} is formatted."
           fi
       done
    
       # if the directory has no other directory, return 0
       if [ "${dir_names}X" == "X" ]; then
           return 0
       fi
    
       # continue convert files in directories recursively
       for dir in ${dir_names}
       do
           convert_rescursive "${dir_path}/${dir}"
       done 
    }
    
    # defines
    from_code="GB2312"
    to_code="UTF-8"
    
    case "$1" in
    "-R")
        ls $2 &> /dev/null
        if [ $? != 0 -o "$2X" == "X" ]; then
            echo "#### error: please check the directory name follow the '-R' option!"
            exit 1
        fi
        convert_rescursive $2
        ;;
    "")
        show_help
        ;;
    *)
        iconv -f ${from_code} -t ${to_code} $1 &> /dev/null
        if [ $? == 0 ]; then
            iconv -f ${from_code} -t ${to_code} < $1 > $@.$$$$
            cp $@.$$$$ $1
            rm -f $@.$$$$
            echo "File $1 is formatted."
        else
            echo "Convert wrong!"
        fi
        ;;
    esac
    

    展开全文
  • 如果你需要在Linux中操作windows下的文件,那么你可能会经常遇到文件编码转换的问题。Windows中默认的文件格式是GBK(gb2312),而Linux一般都是UTF-8。下面介绍一下,在Linux中如何查看文件的编码及如何进行对文件...

    linux下对文件操作经常会遇见乱码问题,我在网上搜了一些解决方法,希望能对大家有所帮助。


    如果你需要在Linux中操作windows下的文件,那么你可能会经常遇到文件编码转换的问题。Windows中默认的文件格式是GBK(gb2312),而Linux一般都是UTF-8。下面介绍一下,在Linux中如何查看文件的编码及如何进行对文件进行编码转换。

     

    查看文件编码
    在Linux中查看文件编码可以通过以下几种方式:
    1.在Vim中可以直接查看文件编码
    :set fileencoding
    即可显示文件编码格式。
    如果你只是想查看其它编码格式的文件或者想解决用Vim查看文件乱码的问题,那么你可以在
    ~/.vimrc 文件中添加以下内容:

    set encoding=utf-8 fileencodings=ucs-bom,utf-8,cp936

    这样,就可以让vim自动识别文件编码(可以自动识别UTF-8或者GBK编码的文件),其实就是依照fileencodings提供的编码列表尝试,如果没有找到合适的编码,就用latin-1(ASCII)编码打开。

     

    文件编码转换
    1.在Vim中直接进行转换文件编码,比如将一个文件转换成utf-8格式
    :set fileencoding=utf-8

     

    2. iconv 转换,iconv的命令格式如下:
    iconv -f encoding -t encoding inputfile
    比如将一个UTF-8 编码的文件转换成GBK编码
    iconv -f GBK -t UTF-8 file1 -o file2

    iconv -f gbk -t utf8 linux常用命令.txt > linux常用命令.txt.utf8

     

    文件名编码转换:

    从Linux 往 windows拷贝文件或者从windows往Linux拷贝文件,有时会出现中文文件名乱码的情况,出现这种问题的原因是因为,windows的文件名 中文编码默认为GBK,而Linux中默认文件名编码为UTF8,由于编码不一致,所以导致了文件名乱码的问题,解决这个问题需要对文件名进行转码。

    在Linux中专门提供了一种工具convmv进行文件名编码的转换,可以将文件名从GBK转换成UTF-8编码,或者从UTF-8转换到GBK。
     

    首先看一下你的系统上是否安装了convmv,如果没安装的话用:
    yum -y install convmv
    安装。

     

    下面看一下convmv的具体用法:

    convmv -f 源编码 -t 新编码 [选项] 文件名

    常用参数:
    -r 递归处理子文件夹
    --notest 真正进行操作,请注意在默认情况下是不对文件进行真实操作的,而只是试验。
    --list 显示所有支持的编码
    --unescap 可以做一下转义,比如把%20变成空格
    比如我们有一个utf8编码的文件名,转换成GBK编码,命令如下:

    convmv -f UTF-8 -t GBK --notest utf8编码的文件名

    这样转换以后"utf8编码的文件名"会被转换成GBK编码(只是文件名编码的转换,文件内容不会发生变化)




    展开全文
  • 查看文件编码Linux中查看文件编码可以通过以下几种方式:1.在Vim中 可以直接查看文件编码:set fileencoding即可显示文件编码格式。如果你只是想查看其它编码格式的文件或者想解决 用Vim查看文件乱码的问题,那么你...
  • set encoding=utf-8 fileencoding=ucs-bom,gbk,utf-8,latin1 vim会自动从列表中检测编码类型 2.检测编码: :set fileencoding 3.设置编码: :set fileencoding = utf-8 或者在命令行中
  • 因为需要使用keil编程,所以在linux/mint下虚拟机安装了xp,文件经常乱码,解决如下: 1。vim配置(~/.vimrc) "编码设置 set encoding=utf-8 //vim使用utf-8编码 set fileencodings=ucs-bom,utf-8,gb18030,gbk...
  • Linux命令:查看文件字符编码

    千次阅读 2019-09-11 19:02:56
    file命令_Linux file命令:查看文件信息或类型 ...file 命令可以识别出文件的类型和编码格式,这是其他命令所做不到的。 查看文件类型 开门见山,我们直接用 file 这面魔镜来看看文件的“内心”。 ...
  • Linux下实用的文件编码转换命令工具iconv   一、iconv命令的手册如下: wzb@zeus:$ man iconv | cat ICONV(1) Debian GNU/Linux ICONV(1) NAME iconv - Convert encoding of
  •  文件属性里面是没有记录自己采用的编码方式的,说系统一般也是根据字符所占的字节数来检测的,而且对有些编码方式不能保证检测的正确率。  locale是linux系统里面的编码设置,没有详细学习它。在与
  • linux设备文件和普通文件

    千次阅读 2014-05-13 14:20:48
    很多人认为文件是一些存储在磁盘上的数据,但是Linux采用了一种更为抽象的方法。将设备抽象成文件。设备文件和普通文件一样具有文件名、另一个i节点号、一个文件所有者、一个权限位集合和最近修改时间。平时了解的和...
  • 关于文件编码格式的一点探讨

    万次阅读 2014-08-20 14:51:26
    最近在win7下写一个C++程序时,转移到linux下表现怪异,调试个半天发现竟然是文件编码问题!于是想花点时间好好总结一下关于文件编码格式的基本概念。这东西长时间没搞就容易忘,这也方便以后再来查询。 首先,关于...
  • * 检测文件编码 * @param string $file_path 文件路径 * @return string $filesize 默认为空,获取文件的全部内容,如果仅需要获取文件编码类型,获取前一百个字符即可,配合detect_encoding方法使用 * @return ...
  • Linux/Windows 下字符编码转换

    千次阅读 2015-05-14 12:36:54
    最近的一个小项目,涉及到字符编码的转换问题,比如Windows下的多字节编码数据到Linux下后会是乱码,因为Windows下多字节编码使用的是GB2312,而Linux下默认则使用的UTF-8,下面的类就提供了该转换的实现!...
  • Linux C++ 字符串 编码识别、编码转换

    千次阅读 2012-10-10 13:51:05
    最近在做一个类似垂直下载的爬虫系统。下载之后有个解析模块,解析之后要求编码一致的向... 推荐使用 libchardet, 可以在这个页面下载,使用说明就算了,直接读头文件吧。  这是一个简单的示例,嘿嘿。 [cpp
  • 一、查看文件编码。   在打开文件的时候输入:set fileencoding   即可显示文件编码格式。  二、文件编码转换   1、在Vim中直接进行转换文件编码,比如将一个文件转换成utf-8格式   在打开的文件...
  • Linux文件系统及常用命令

    千次阅读 2016-03-08 22:00:00
    Linux文件系统介绍: 一 、Linux文件结构  文件结构是文件存放在磁盘等存贮设备上的组织方法。主要体现在对文件和目录的组织上。目录提供了管理文件的一个方便而有效的途径。  Linux使用树状目录结构,在安装...
  • unar方法1.安装unar yum install unar这个最简单省力,默认debian已经安装了额unar,这个工具会自动检测文件编码,也可以通过-e来指定2.用unar解压unar file.zip即可解压出中文文件。
  • windows通过文件扩展名来识别文件类型,从而确定用什么程序打开文件linux通过文件的头部信息来来获取文件类型或者编码格式,用到的命令是file。
  • Linux与Windows间的编码

    千次阅读 2012-07-25 19:44:50
    但遗憾的是,Windows XP 的默认编码格式是 GBK,而我的 Linux 编码格式是 UTF-8。这就给两者的中文操作形成困扰。不过VIM编辑器可以很平滑地解决这个问题,具体做法是在Windows和Linux下分别设置两者的VIM配置,设置...
  • Linux编程——文件 IO操作

    千次阅读 2015-08-21 08:15:21
    Linux文件 I\O 介绍  1. Linux系统调用  Linux系统调用(system call)是指操作系统提供给用户程序的一组“特殊接口”,用户程序可以通过这组“特殊”接口来获得操作系统提供的特殊服务。  为了更好的保护内核空间...
  •  简单来说,文本文件是基于字符编码文件,常见的编码有ASCII编码,UNICODE编码等等。二进制文件是基于值编码文件,你可以根据具体应用,指定某个值是什么意思(这样一个过程,可以看作是自定义编码
  • http://www.ibm.com/developerworks/cn/linux/i18n/unicode/linuni/
  • Linux内核编译流程(Menuconfig图形化方式)Menuconfig配置内核原理:在Linux里面我们所看到的menuconfig界面是通过配置内核顶层的Kconfig产生的,而当输入make menuconfig命令的时候系统会读取Makefile来解析...
  • perl文件编码处理问题

    千次阅读 2013-07-30 11:00:22
    在看perl时,发现文件编码处理问题不是很懂。BG了下,发现还是有点东东,so,收藏下: --------------------------1----------------------------------- 一个脚本用于分析应用程序的日志,但是在这些日志文件中,有...
  • LINUX内核目录文件说明

    万次阅读 2018-08-03 09:40:31
    内核空间和用户空间  在下载内核前,我们应该讨论一些重要的术语和事实。首先了解一下内核空间和用户空间 ... Linux内核是一个宏内核,这意味着整个操作系统都运行在内核预留的内存里。 内...
  • 文件编码及UTF-8、BOM、0XFEFF相关问题

    千次阅读 2016-05-30 10:28:22
     从文件编码的方式来看,文件可分为ASCII码文件和二进制码文件两种。  ASCII文件也称为文本文件,这种文件在磁盘中存放时每个字符对应一个字节,用于存放对应的ASCII码。例如,数5678的存储形式为: 1 2 3...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 56,504
精华内容 22,601
关键字:

linux检测文件编码

linux 订阅