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

Python CSV模块读取含印地语的CSV时显示乱码,如何解决?

解决印地语文本CSV读取乱码问题

可能的原因及对应解决方案:

  • 原因1:CSV文件实际编码不是UTF-8
    印地语文本的CSV可能被保存为ISO-8859-1、UTF-16或Windows专用的cp1252等编码,直接用utf-8解码会导致乱码。

    • 先安装chardet库检测文件编码:
      pip install chardet
      
    • 修改代码加入编码检测逻辑:
      import chardet
      import csv
      import copy
      
      csvFile = request.FILES.get('file')
      csv_copy = copy.deepcopy(csvFile)
      file_content = csv_copy.read()
      
      # 自动检测文件编码
      detected_encoding = chardet.detect(file_content)['encoding']
      print(f"检测到文件编码:{detected_encoding}")
      
      decoded_file = file_content.decode(detected_encoding).splitlines()
      reader = csv.reader(decoded_file)
      rows = list(reader)
      for i,row in enumerate(rows):
          print(row[1])
      
    • 如果检测结果为None,可手动尝试utf-8-sig(处理带BOM的UTF-8文件)、latin-1等常见兼容编码。
  • 原因2:终端/控制台不支持UTF-8显示
    即便读取到正确文本,终端未设置UTF-8编码也会显示问号:

    • Windows CMD中执行命令切换编码:
      chcp 65001
      
    • 确保终端字体支持印地语字符,比如使用Segoe UI、Noto Sans Devanagari等字体。
  • 简化读取替代方案
    直接用csv.reader读取文件对象,跳过手动解码步骤:

    import csv
    import copy
    
    csvFile = request.FILES.get('file')
    csv_copy = copy.deepcopy(csvFile)
    
    # 直接读取文件对象,指定检测到的编码
    reader = csv.reader(csv_copy, encoding='utf-8') # 替换为实际检测出的编码
    rows = list(reader)
    for i,row in enumerate(rows):
        print(row[1])
    

内容的提问来源于stack exchange,提问作者padmaja cherukuri

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 01:27:11