将 unicode 代码点转换为 irssi 中的特定字符串
Translate unicode code points to specific strings in irssi
是否有 command/setting/script 将某些 unicode 代码点转换为 irssi 中的不同字符串?具体来说,我想将表情符号代码点转换为 ASCII 笑脸符号,因为我的字体不支持它们。这主要用于 facebook messenger 插件。我试过为此创建一个 perl 脚本,但文档有点稀疏。
所以,问题是我的 irssi 有点过时了,错误已经修复,而且实际上很容易完成。对于任何想做同样事情的人,您需要遵循以下原则:
my %hash = (
0x1f600 => ':)',
# add smileys to taste here
);
sub transform ($$$$$$) {
my ($server, $msg, $nick, $address, $target) = @_;
my $transformed = '';
$msg = decode('utf8', $msg);
for (my $l = length($msg), my $i = 0; $i < $l; $i++) {
my $chr = substr($msg, $i, 1);
my $code = ord($chr);
if (defined $hash{$code}) {
$transformed .= $hash{$code};
}
else {
$transformed .= $chr;
}
}
Irssi::signal_continue($server, $transformed, $nick, $address, $target);
}
Irssi::signal_add_last('message public', 'transform');
Irssi::signal_add_last('message private', 'transform');
请注意,我绝对不是 Perl 专家,因此可能有 smarter/better 种方法可以实现!
是否有 command/setting/script 将某些 unicode 代码点转换为 irssi 中的不同字符串?具体来说,我想将表情符号代码点转换为 ASCII 笑脸符号,因为我的字体不支持它们。这主要用于 facebook messenger 插件。我试过为此创建一个 perl 脚本,但文档有点稀疏。
所以,问题是我的 irssi 有点过时了,错误已经修复,而且实际上很容易完成。对于任何想做同样事情的人,您需要遵循以下原则:
my %hash = (
0x1f600 => ':)',
# add smileys to taste here
);
sub transform ($$$$$$) {
my ($server, $msg, $nick, $address, $target) = @_;
my $transformed = '';
$msg = decode('utf8', $msg);
for (my $l = length($msg), my $i = 0; $i < $l; $i++) {
my $chr = substr($msg, $i, 1);
my $code = ord($chr);
if (defined $hash{$code}) {
$transformed .= $hash{$code};
}
else {
$transformed .= $chr;
}
}
Irssi::signal_continue($server, $transformed, $nick, $address, $target);
}
Irssi::signal_add_last('message public', 'transform');
Irssi::signal_add_last('message private', 'transform');
请注意,我绝对不是 Perl 专家,因此可能有 smarter/better 种方法可以实现!