windows和linux采用了不同的编码,这让很多人伤透了脑经,这里我采用了Python的chardet库获得代码的编码,然后修改编码。

1、首先需要安装chardet库,有很多方式,我才用的是比较笨的方式:sudo pip install chardet

2、废话不多说,直接上代码,同样废话一句,小弟是初手,仅供参考,请大家多多指教。

python版本:

#!/usr/bin/env python
# coding: UTF-8
import sys
import os
import chardet
 
 
def print_usage():
  print '''usage:
  change_charset [file|directory] [charset] [output file]\n
  for example:
    change 1.txt utf-8 n1.txt
    change 1.txt utf-8
    change . utf-8
    change 1.txt
'''
 
 
def get_charset(s):
  return chardet.detect(s)['encoding']
 
 
def remove(file_name):
  os.remove(file_name)
 
 
def change_file_charset(file_name, output_file_name, charset):
  f = open(file_name)
  s = f.read()
  f.close()
 
  if file_name == output_file_name or output_file_name == "":
    remove(file_name)
 
  old_charset = get_charset(s)
  u = s.decode(old_charset)
 
  if output_file_name == "":
    output_file_name = file_name
  f = open(output_file_name, 'w')
  s = u.encode(charset)
  f.write(s)
  f.close()
 
 
def do(file_name, output_file_name, charset):
  if os.path.isdir(file_name):
    for item in os.listdir(file_name):
      try:
        if os.path.isdir(file_name+"/"+item):
          do(file_name+"/"+item, "", charset)
        else:
          change_file_charset(file_name+"/"+item, "", charset)
      except OSError, e:
        print e
  else:
    change_file_charset(file_name, output_file_name, charset)
 
 
if __name__ == '__main__':
  length = len(sys.argv)
 
  if length == 1:
    print_usage()
  elif length == 2:
    do(sys.argv[1], "", "utf-8")
  elif length == 3:
    do(sys.argv[1], "", sys.argv[2])
  elif length == 4:
    do(sys.argv[1], sys.argv[3], sys.argv[2])
  else:
    print_usage()

采用python获得并修改文件编码(原创)的更多相关文章

  1. Ubuntu 查看/修改文件编码

    使用enca工具可以查看和修改文件编码 1.安装 sudo apt-get install enca 2.使用 查看文件编码 enca –L zh_CN file_name 修改文件编码 enca – ...

  2. eclipse修改文件编码

    http://topic.csdn.net/u/20080724/14/428de399-790d-442a-8340-3a5fb6dcfcee.html[修改文件编码,假设JS]   在Eclips ...

  3. python 修改文件编码方式

    import chardet import os def strJudgeCode(str): return chardet.detect(str) def readFile(path): try: ...

  4. 分享一个批量修改文件编码的python脚本

    分享一个自己编写的递归查找子目录,将所有cpp文件编码修改为utf-8编码格式的小脚本 #i!/usr/bin/env python3 # -*- coding:utf-8 -*- import os ...

  5. python大法好——修改文件、函数

    1.修改文件 补充上次没洗完的: 想要修改某个文件里一块地方,可以使用seek函数找到位置write函数修改. 是不是觉得这很简单? 但是如果你这样操作很可能会出现乱码. 因为由于字节数的不同,编码的 ...

  6. IDEA 修改文件编码

    Intellij Idea 修改 properties 文件编码 现象:idea 默认的properties文件是GBK,当有中文时,不同的客户端配置的编码不同时,可能产生中文乱码. 解决:修改pro ...

  7. vim:用vim修改文件编码为utf-8

    命令是 :set fileencoding=utf-8如果用vim打开文件时里面有乱码,可能用上面的命令修改文件后无法保存.可以用其他软件打开文件,然后把内容拷贝到vim里再保存就行了.

  8. vim学习笔记(12):在vim中修改文件编码,解决vim 打开乱码

    在linux 中查看文件编码可以通过以下几种方式: 一.查看文件编码 1.查看文件编码file命令 :file ip.txt ip.txt: UTF-8 Unicode text, with esca ...

  9. vim学习日志(8):linux查看和修改文件编码

    查看文件的编码 方法一: 1.在Vim中可以直接查看文件编码:set fileencoding即可显示文件编码格式.注:如果你只是想查看其它编码格式的文件或者想解决用Vim查看文件乱码的问题,那么你可 ...

随机推荐

  1. easyui valid

    /** * 包含easyui的扩展和常用的方法 * * @author * * @version 20120806 */ var wjc = $.extend({}, wjc);/* 定义全局对象,类 ...

  2. MAX函数和GROUP BY 语句一起使用的一个误区

    使用MAX 函数和 GROUP 的时候会有不可预料的数据被SELECT 出来.下面举个简单的例子:想知道每个SCOREID 的 数学成绩最高的分数. 表信息:/*DDL Information For ...

  3. [React] Using the classnames library for conditional CSS

    Classnames is a simple yet versatile javascript utility that joins CSS class names based on a set of ...

  4. Match+Faq

    假如在GameLayer.h中有Card类型的变量,那么在Card.h文件中,不要有GameLayer.h的导入.这样子会导致编译器找不到对Card类型的定义而导致报错.但是,在Card.cpp中可以 ...

  5. kali2.0如何安装中文输入法

    由于kali的更新源是国外网站,替换成国内的镜像站,具体操作如下: 打开终端输入 leafpad /etc/apt/sources.list   把下面的源粘贴进去,原有内容注释掉 #中科大源deb  ...

  6. OpenJDK1.8 安装

    1. 安装JDK yum install -y java-1.8.0-openjdk-devel 2. 设置环境变量 /etc/profile文件增加 export JAVA_HOME=/usr/li ...

  7. thinkphp中关于rbac的两个session

    最近在做单点登录,需要session由sso的client生成.所以研究了下RBAC的类的代码. 有了这两个seesion就可以用rbac进行权限验证 $_SESSION[C('ADMIN_AUTH_ ...

  8. 动态使用webservice,以及含有ref类型的参数的问题

    public class WSHelper { /// < summary> /// 动态调用web服务 /// < /summary> /// < param name ...

  9. web 电子商务网站开发笔记整理

    js只保留整数,向上取整,四舍五入,向下取整等函数 来源:ab蓝学网整理 时间:2014-07-09 点击:30131 简介:WEB前端|1.丢弃小数部分,保留整数部分parseInt(5/2)2.向 ...

  10. 20151205 jquery 学习笔记--Ajax

    Ajax全称为:“Asynchronous JavaScript and XML”(异步 JavaScript 和 XML), 它并不是 JavaScript 的一种单一技术,而是利用了一系列交互式网 ...