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

VSCode终端中Polars DataFrame显示乱码的解决咨询

VSCode终端中Polars DataFrame输出乱码的解决办法

问题现象

使用Rust结合Polars读取CSV并打印DataFrame时,VSCode终端输出大量乱码字符,但在Command Prompt或PowerShell中运行同一程序显示正常。

VSCode终端乱码示例:

df_astro: shape: (3, 2)
ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
Γöé A   Γöå B   Γöé
Γöé --- Γöå --- Γöé
Γöé i64 Γöå i64 Γöé
Γò₧ΓòÉΓòÉΓòÉΓòÉΓòÉΓò¬ΓòÉΓòÉΓòÉΓòÉΓòÉΓòí
Γöé 1   Γöå 4   Γöé
Γö£ΓòîΓòîΓòîΓòîΓòîΓö╝ΓòîΓòîΓòîΓòîΓòîΓöñ
Γöé 2   Γöå 5   Γöé
Γö£ΓòîΓòîΓòîΓòîΓòîΓö╝ΓòîΓòîΓòîΓòîΓòîΓöñ
Γöé 3   Γöå 6   Γöé
ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ

正常输出示例:

df_astro: shape: (3, 2)
┌─────┬─────┐
│ A   ┆ B   │
│ --- ┆ --- │
│ i64 ┆ i64 │
╞═════╪═════╡
│ 1   ┆ 4   │
├╌╌╌╌╌┼╌╌╌╌╌┤
│ 2   ┆ 5   │
├╌╌╌╌╌┼╌╌╌╌╌┤
│ 3   ┆ 6   │
└─────┴─────┘

修复建议

1. 强制Polars使用ASCII格式输出表格

Polars默认使用Unicode绘制表格边框,部分终端可能对这些Unicode字符的渲染存在问题。改用ASCII格式输出即可避免乱码。

修改打印代码,将{:#?}替换为df.to_string_ascii():

let df_astro = read_csv_to_dataframe(&file_astro);
match df_astro {
    Ok(df) => println!("df_astro:\n{}", df.to_string_ascii()),
    Err(err) => println!("Error reading astro data: {}", err),
}

如果需要全局生效,可以设置Polars的配置:

use polars::prelude::*;

fn main() {
    // 全局配置使用ASCII表格格式
    let mut config = Config::new();
    config.set_tbl_format(TblFormat::Ascii);
    set_global_config(config);

    // 后续读取CSV和处理代码...
    let file_astro = "your_file_path.csv";
    let df_astro = read_csv_to_dataframe(file_astro);
    match df_astro {
        Ok(df) => println!("df_astro:\n{:#?}", df),
        Err(err) => println!("Error reading astro data: {}", err),
    }
}

fn read_csv_to_dataframe(file_path: &str) -> Result<DataFrame, PolarsError> {
    let df = CsvReader::from_path(file_path)?
        .infer_schema(Some(5))
        .has_header(true)
        .with_delimiter(b',')
        .with_ignore_parser_errors(true)
        .finish()?;

    Ok(df)
}

2. 确保VSCode终端使用UTF-8编码

虽然你已确认VSCode终端编码为UTF-8,但可以再次验证并强制切换:

  • 在VSCode终端中执行命令:chcp,如果输出不是Active code page: 65001,执行chcp 65001切换到UTF-8编码,然后重新运行程序。
  • 若希望永久生效,可修改VSCode配置:
    打开settings.json(快捷键Ctrl+,进入设置,点击右上角打开JSON),添加以下配置:
    "terminal.integrated.profiles.windows": {
      "Command Prompt": {
        "path": "cmd.exe",
        "args": ["/K", "chcp 65001"]
      }
    },
    "terminal.integrated.defaultProfile.windows": "Command Prompt"
    

3. 更换支持Unicode的终端字体

部分字体对Unicode表格绘制字符支持不佳,推荐更换为以下字体:

  • Consolas(Windows默认支持)
  • JetBrains Mono
  • Fira Code
  • Cascadia Code

更换方法:VSCode设置中搜索terminal.integrated.fontFamily,输入上述字体名称即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 05:25:58