You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python2.7中UTF-8转中文及打印含中文文件名路径的问题

在Python 2.7中处理UTF-8转中文及打印中文文件名的解决方案

嘿,我来帮你搞定Python2.7里这两个中文编码相关的问题~

1. UTF-8编码转中文字符

Python2.7里字符串分两种:str是字节串,unicode才是真正的字符对象。UTF-8编码的内容本质是字节序列,要显示成中文字符,得先把它解码成unicode对象。

举个简单例子:

# 因为文件头声明了# -*- coding: utf-8 -*-,所以这里的字符串是UTF-8编码的str
utf8_byte_str = "大禹治水"
# 解码为unicode,才能正确显示中文
chinese_unicode = utf8_byte_str.decode('utf-8')
print(chinese_unicode)

如果是从文件读取UTF-8内容,也要记得解码:

with open('005大禹治水.lrc', 'r') as lrc_file:
    # 读取到的是UTF-8字节串
    utf8_content = lrc_file.read()
    # 转成unicode处理中文
    unicode_content = utf8_content.decode('utf-8')
    # 后续操作比如提取歌词、打印都用unicode就不会乱码

2. 打印包含目录的中文文件名

针对你给出的示例路径/home/user/lrc/005大禹治水.lrc,在Python2.7里打印这类带中文的路径,关键是处理好路径字符串的编码:

推荐方案:解码为unicode后打印

Linux/macOS下,os模块返回的路径默认是UTF-8编码的str,把它转成unicode再打印,就能稳定显示中文。结合你的代码修改如下:

# -*- coding: utf-8 -*-
from __future__ import print_function
import argparse
import os
from pydub import AudioSegment

def main():
    wd= os.path.split(os.path.realpath(__file__))[0]
    parser = argparse.ArgumentParser()
    parser.add_argument('--lrc', default=os.path.expanduser(wd + '/lrc'))
    args = parser.parse_args()

    # 遍历指定目录下的所有文件
    for filename in os.listdir(args.lrc):
        # 拼接完整文件路径
        full_file_path = os.path.join(args.lrc, filename)
        # 将UTF-8编码的路径解码为unicode
        unicode_path = full_file_path.decode('utf-8')
        # 打印中文路径
        print(unicode_path)

if __name__ == "__main__":
    main()

备选方案:直接编码适配终端

如果你的终端默认用UTF-8编码,也可以直接把路径字节串编码后打印(不过还是推荐unicode方案,兼容性更强):

print(full_file_path.encode('utf-8'))

另外提一句:如果是在Windows系统下,文件名编码是GBK/GB2312,这时候要把解码换成decode('gbk'),不过你的示例是Linux风格路径,应该用不到这个~

内容的提问来源于stack exchange,提问作者David Aksnes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:52:40