当然,这是可能的.如果你有字节数组
my @bytes = (0xce, 0xb1, 0xce, 0xb2, 0xce, 0xb3);
Run Code Online (Sandbox Code Playgroud)
你需要先将它们组合成一串八位字节:
my $x = join '', map chr, @bytes;
Run Code Online (Sandbox Code Playgroud)
然后,你可以使用UTF8 ::解码将其转换成UTF-8 的地方:
utf8::decode($x)
or die "Failed to decode UTF-8";
Run Code Online (Sandbox Code Playgroud)
您也可以使用Encode :: decode_utf8.
#!/usr/bin/env perl
use 5.020; # why not?!
use strict;
use warnings;
use Encode qw( decode_utf8 );
use open qw(:std :utf8);
my @bytes = (0xce, 0xb1, 0xce, 0xb2, 0xce, 0xb3);
my $x = join '', map chr, @bytes;
say "Using Encode::decode_utf8";
say decode_utf8($x);
utf8::decode($x)
or die "Failed to decode in place";
say "Using utf8::decode";
say $x;
Run Code Online (Sandbox Code Playgroud)
输出:
C:\Temp> perl tt.pl Using Encode::decode_utf8 ??? Using utf8::decode ???
Encode允许您在许多字符编码之间进行转换.它的功能允许您指定在编码/解码操作失败的情况下发生的情况,而utf8::decode您只能明确检查成功/失败.
| 归档时间: |
|
| 查看次数: |
1812 次 |
| 最近记录: |