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

如何用Data::Dumper输出可读的UTF-8字符串?

让Data::Dumper输出可读的UTF-8字符串

要解决Data::Dumper转储UTF-8字符时显示转义码的问题,你完全不需要手动用chr处理每个输出,只需要调整Data::Dumper的几个核心参数,同时确保输出流的编码正确即可。

解决方案示例代码

use utf8;
use Data::Dumper;

# 配置Data::Dumper输出UTF-8原字符
$Data::Dumper::Encoding = 'utf8';
# 可选:去掉默认的$VAR1前缀,让输出更简洁
$Data::Dumper::Terse = 1;
# 确保标准输出流以UTF-8编码输出,避免终端乱码
binmode STDOUT, ':encoding(utf8)';

# 测试复杂结构也能正常输出
say Dumper({
    да => "не",
    привет => ["мир", "вселенная"],
    ключ => { вложенный => "значение" }
});

参数说明

  • $Data::Dumper::Encoding = 'utf8':这是核心设置,告诉Data::Dumper直接输出UTF-8编码的原字符,而不是将非ASCII字符转义为\x{XXXX}形式的Unicode码点。
  • binmode STDOUT, ':encoding(utf8)':很多终端环境默认可能不是UTF-8编码,这一步确保输出的字节能被终端正确解析为UTF-8字符,避免乱码。
  • $Data::Dumper::Terse = 1:可选参数,如果你不需要默认的$VAR1 = ...前缀,开启这个参数能让输出更紧凑,更适合调试查看。

效果

运行上面的代码,你会得到完全可读的UTF-8输出:

{
  "да" => "не",
  "привет" => [
                "мир",
                "вселенная"
              ],
  "ключ" => {
              "вложенный" => "значение"
            }
}

这个配置对任何复杂程度的数据结构都生效,Data::Dumper会递归处理所有字符串,自动输出可读的UTF-8内容,不用你手动处理每个字段。

内容的提问来源于stack exchange,提问作者Беров

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:46:55