文件在windows那边编辑好之后,直接复制Linux系统下,可能会因编码问题而使汉字显示乱码。因为Windows系统下默认用GBK编码,Linux系统下默认用UTF-8编码。遇到这种情况,可以先查询文件的编码:

file name.ext

GBK编码在Linux系统下有时候会显示是ISO-8859编码。在Linux系统下要转换编码,可直接用系统自带的iconv命令在终端中运行:

# 将GBK文件转换为UTF-8(生成新文件)
iconv -f GBK -t UTF-8 windows_file.txt -o linux_file_utf8.txt

# 批量转换当前目录下所有.txt文件
for file in *.txt; do iconv -f GBK -t UTF-8 "$file" > "${file%.txt}_utf8.txt"; done

若要覆盖源文件,则在终端运行:

iconv -f GBK -t UTF-8 input_file.txt -o temp.txt && mv temp.txt input_file.txt

也可利用Vim编辑器进行转换,在Linux中用Vim打开文件后执行:set fileencoding=utf-8保存即可。
如果文件分散在某个文件夹内及其各级子文件夹内,可以建立shell脚本一次性处理,创建一个名为 convert_gbk_to_utf8.sh 的文件,内容如下:

#!/bin/bash

if [ -z "$1" ]; then
    echo "Usage: $0 DIRECTORY"
    exit 1
fi

DIR="$1"

find "$DIR" -type f -name "*.tex" | while read -r file; do
    iconv -f gbk -t utf-8 "$file" -o "${file}.tmp" && mv "${file}.tmp" "$file"
    echo "Converted: $file"
done

赋予脚本执行权限:

chmod +x convert_gbk_to_utf8.sh

在终端中运行命令,指定目标文件夹路径:

./convert_gbk_to_utf8.sh /path/to/texfiles

脚本会递归地找到所有 .tex 文件,并将其编码从 GBK 转换为 UTF-8。

转载请注明出处,谢谢!