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

目录
相关文章
|
3月前
|
Linux 数据安全/隐私保护 Windows
Linux共享Windows目录
Linux共享Windows目录
|
25天前
|
Ubuntu 安全 Linux
|
1月前
|
存储 Linux 编译器
cmake的单目录和多目录的使用(Linux和Windows)
本文介绍了在Windows和Linux平台上使用CMake构建单目录和多目录项目的步骤,包括如何配置CMakeLists.txt文件以及如何生成和使用可执行文件、库文件。
19 2
|
21天前
|
Linux 网络安全 虚拟化
适用于Linux的Windows子系统(WSL1)的安装与使用记录
并放到启动文件夹,就可以开机自动启动了。
22 0
|
1月前
|
关系型数据库 MySQL Linux
Navicat 连接 Windows、Linux系统下的MySQL 各种错误,修改密码。
使用Navicat连接Windows和Linux系统下的MySQL时可能遇到的四种错误及其解决方法,包括错误代码2003、1045和2013,以及如何修改MySQL密码。
195 0
|
3月前
|
缓存 NoSQL Linux
【Azure Redis 缓存】Windows和Linux系统本地安装Redis, 加载dump.rdb中数据以及通过AOF日志文件追加数据
【Azure Redis 缓存】Windows和Linux系统本地安装Redis, 加载dump.rdb中数据以及通过AOF日志文件追加数据
125 1
【Azure Redis 缓存】Windows和Linux系统本地安装Redis, 加载dump.rdb中数据以及通过AOF日志文件追加数据
|
3月前
|
Unix Linux Ruby
在windows和linux上高效快捷地发布Dash应用
在windows和linux上高效快捷地发布Dash应用
|
3月前
|
Linux iOS开发 开发者
跨平台开发不再难:.NET Core如何让你的应用在Windows、Linux、macOS上自如游走?
【8月更文挑战第28天】本文提供了一份详尽的.NET跨平台开发指南,涵盖.NET Core简介、环境配置、项目结构、代码编写、依赖管理、构建与测试、部署及容器化等多个方面,帮助开发者掌握关键技术与最佳实践,充分利用.NET Core实现高效、便捷的跨平台应用开发与部署。
172 3
|
3月前
|
Ubuntu Linux 虚拟化
安装Windows Linux 子系统的方法:适用于windows 11 版本
本文提供了在Windows 11系统上安装Linux子系统(WSL)的详细步骤,包括启用子系统和虚拟化功能、从Microsoft Store安装Linux发行版、设置WSL默认版本、安装WSL2补丁,以及完成Ubuntu的首次安装设置。
823 2
|
3月前
|
Linux Windows
【Linux】grub命令行引导进入windows系统
【8月更文挑战第20天】在Linux中通过GRUB命令行引导Windows的方法包括:1) 进入GRUB命令行模式,启动时按`c`键;2) 使用`ls`查找含Windows引导文件的分区,如`bootmgr`或`ntldr`;3) 设置根设备`root=(hd0,msdos3)`与链加载器`chainloader +1`;4) 输入`boot`命令启动Windows。请注意实际步骤可能因系统配置而异。
366 2