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

Perl脚本:如何将字符串中的十进制Unicode编码转换为实际字符

解决Perl中十进制Unicode编码转字符的问题

你需要处理的字符串是从TXT读取到的$str = "F'252'r ('8364')",其中单引号内的十进制数字是Unicode编码,目标是转换成可显示的“Für (€)”。直接用Encode模块或pack/unpack没解决的话,可以用正则配合chr()函数快速处理:

代码实现

use strict;
use warnings;
use utf8;
binmode(STDOUT, ':utf8'); # 确保输出为UTF-8编码

my $str = "F'252'r ('8364')";

# 全局替换所有单引号内的十进制数字为对应Unicode字符
$str =~ s/'(\d+)'/chr($1)/ge;

print $str; # 输出结果:Für (€)

关键说明

  • s/'(\d+)'/chr($1)/ge:正则匹配单引号包裹的十进制数字,e修饰符让替换部分作为Perl代码执行,chr($1)会将十进制数字转换为对应的Unicode字符;g修饰符确保替换所有符合条件的匹配项。
  • use utf8;:声明脚本本身采用UTF-8编码,避免内部字符串处理出现乱码。
  • binmode(STDOUT, ':utf8');:强制标准输出使用UTF-8编码,保证终端或文件能正确显示Unicode字符。

额外注意

如果读取外部TXT文件时,要确保文件编码是UTF-8,打开文件时建议指定编码层:

open my $fh, '<:utf8', 'your_file.txt' or die "无法打开文件: $!";
my $str = do { local $/; <$fh> };
close $fh;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 15:03:11