后端文件转码

文件转码

工作中经常遇到的问题之一,就是一个转码问题,这主要的坑爹原因是公司的前端都使用utf8编码,后端一般则是使用gbk编码。对于代码中的编码转化一般是使用公司现成的api,这里就不具体介绍了。下面要说的是在做数据分析时,对文件编码进行转换的解决方法。个人主要使用如下两种方法。

方法1:linux的iconv转码命令

例如对于一个utf8编码的文件想要转化为gbk,通常的做法如下:

iconv -f UTF-8 -t GBK input_file(原编码文件) -o output_file(目标编码文件)

这个命令使用起来非常方便,但是也经常对一些特殊字符转化无能为力,导致文件转码失败。如果我们可以忽略那些特殊字符,只需要整个文件转码完成,则可以使用方法二。

方法2:使用一个简单python脚本

代码如下,核心代码就一行。

#! /usr/bin/env python
# -*- coding:gbk -*-

import sys

def main():
    input = sys.argv[1]
    output = sys.argv[2]

    with open(input, 'r') as fin, open(output, 'w') as fout:
        for line in fin:
            line = line.decode('utf8', 'ignore').encode('gbk', 'ignore')
            fout.write(line)

if __name__ == "__main__":
    main()

脚本的使用方式很简单。

python iconv.py input output

这两个方法都不复杂,个人一般先使用方法1,如果失败的话再使用方法2。

欢迎点击

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值