Linux 中 Windows 中文乱码

简介: Linux 下 Windows 源代码中文乱码由于 windows 和 linux 对文本的编码方式不同,所以经常会有 windows 中生成的文本在 linux 中打开乱码的情况。比如:我面临的情况是现在有很多的源代码文件是处于这样的情况,如下图:其中每个文件夹中包含了 java 源代码文件和子文件夹。

Linux 下 Windows 源代码中文乱码

由于 windows 和 linux 对文本的编码方式不同,所以经常会有 windows 中生成的文本在 linux 中打开乱码的情况。

比如:
img_f9c5edfcf12c3f4497596c36e5acc8d3.png

我面临的情况是现在有很多的源代码文件是处于这样的情况,如下图:
img_0fc71ee35eb97385873eb60ca9927282.png

其中每个文件夹中包含了 java 源代码文件和子文件夹。

在参考了网上的部分文章后(https://blog.csdn.net/imyang2007/article/details/7448177),我写了一个脚本用于将这个目录下的所有 java 源代码转码成 UTF-8。

后来转念一想,顺便扩展一下直接支持多种类型的源代码文件好了。

于是,就再次完善了一下。

对于我的情况,直接将脚本拖到 Tomcat-Java-Web-development-src-master_UTF-8 目录下,在命令行中运行即可(默认 java 源代码文件)

转码之后的结果:
img_f414835568dbba095f1dc8c002363513.png

使用方法

直接将脚本放到要进行转码的文件夹中,运行即可。

程序接受两个参数或者没有参数(默认当前文件夹,java 源代码),第一个是要进行转码的文件目录,第二个是源代码文件类型。

源代码如下:

import os
import sys

rootPath = './'
fileType = 'java'
if len(sys.argv) == 2:
    print("Two or zero argumens are needed \n    python GbToUFT.py [path] [fileType] \n")
    sys.exit(0)
elif len(sys.argv) == 3:
    rootPath = sys.argv[1]
    fileType = sys.argv[2]

for folderName,_,fileNames in os.walk(rootPath):
    javaFileList = [fileName for fileName in fileNames if fileName.endswith('.' + fileType)]
    for items in javaFileList:
        print(items)
        oldName = items
        tempName = items[0:len(items)-5] + "_." + fileType
        os.system("mv " + folderName + "/" + items + " " + folderName + "/" + tempName)
        os.system("iconv -f gbk -t utf8 " + folderName + \
         "/" + tempName + " > "  + folderName + "/" + oldName)
        os.system("rm -rf " + folderName + "/" + tempName)

GBToUTF.py

警告:对同一文件重复转码可能毁坏原文件,转码前请先备份。

原创文章,转载请注明出处。

参考文章

https://blog.csdn.net/imyang2007/article/details/7448177

目录
相关文章
|
12天前
|
安全 Ubuntu Linux
Metasploit Pro 4.22.6-2024111901 (Linux, Windows) - 专业渗透测试框架
Metasploit Pro 4.22.6-2024111901 (Linux, Windows) - 专业渗透测试框架
35 9
Metasploit Pro 4.22.6-2024111901 (Linux, Windows) - 专业渗透测试框架
|
4月前
|
Linux 数据安全/隐私保护 Windows
Linux共享Windows目录
Linux共享Windows目录
|
2月前
|
Ubuntu 安全 Linux
|
12天前
|
自然语言处理 安全 Java
Nexpose 7.0.1 for Linux & Windows - 漏洞扫描
Nexpose 7.0.1 for Linux & Windows - 漏洞扫描
34 6
|
15天前
|
关系型数据库 MySQL Linux
MySQL数据库下载安装教程(Windows&Linux)
本文档详细介绍了MySQL的安装步骤,包括安装前的准备工作、下载安装包、Windows和Linux系统下的具体安装流程,以及如何配置MySQL服务、设置环境变量、启动服务和连接数据库等关键操作。
|
29天前
|
NoSQL Linux PHP
如何在不同操作系统上安装 Redis 服务器,包括 Linux 和 Windows 的具体步骤
本文介绍了如何在不同操作系统上安装 Redis 服务器,包括 Linux 和 Windows 的具体步骤。接着,对比了两种常用的 PHP Redis 客户端扩展:PhpRedis 和 Predis,详细说明了它们的安装方法及优缺点。最后,提供了使用 PhpRedis 和 Predis 在 PHP 中连接 Redis 服务器及进行字符串、列表、集合和哈希等数据类型的基本操作示例。
56 4
|
2月前
|
存储 Linux 编译器
cmake的单目录和多目录的使用(Linux和Windows)
本文介绍了在Windows和Linux平台上使用CMake构建单目录和多目录项目的步骤,包括如何配置CMakeLists.txt文件以及如何生成和使用可执行文件、库文件。
56 2
|
2月前
|
Linux 网络安全 虚拟化
适用于Linux的Windows子系统(WSL1)的安装与使用记录
并放到启动文件夹,就可以开机自动启动了。
75 0
|
2月前
|
关系型数据库 MySQL Linux
Navicat 连接 Windows、Linux系统下的MySQL 各种错误,修改密码。
使用Navicat连接Windows和Linux系统下的MySQL时可能遇到的四种错误及其解决方法,包括错误代码2003、1045和2013,以及如何修改MySQL密码。
272 0
|
4月前
|
Unix Linux Ruby
在windows和linux上高效快捷地发布Dash应用
在windows和linux上高效快捷地发布Dash应用