xpt Asked: 2024-07-01 04:41:54 +0800 CST2024-07-01 04:41:54 +0800 CST 2024-07-01 04:41:54 +0800 CST Perl 将普通字母转换为宽字符 772 如何perl从半角形式转换为全角形式?perl用 的术语来说,就是从普通字符转换为宽字符。 例如,从!abc ABC!到!abc ABC!。从算术上讲,以下应该是正确的 binmode STDOUT, ":utf8"; $letter = 'A'; $lw = chr($letter + 0xfee0); print "Hello $lw ($letter)!\n"; 但打印出来的效果不是我所希望的,应该是Hello A (A)! perl 1 个回答 Voted Best Answer TLP 2024-07-01T04:48:12+08:002024-07-01T04:48:12+08:00 如果你使用了,use warnings你会收到一条警告,提示添加失败: 参数“A”在加法 (+) 中不是数字...... 这意味着您的字母'A'在加法之前被转换为数字,在本例中就是0。您可以通过删除$letter +并运行数字来验证这一点chr()。 您可以通过修复逻辑来解决问题: my $lw = chr(ord($letter) + 0xfee0); 先将字母转换成数字(ord()),然后进行加法。 请注意,为了避免类似这样的简单错误,您应该始终使用这些指令: use strict; use warnings;
如果你使用了,
use warnings
你会收到一条警告,提示添加失败:这意味着您的字母
'A'
在加法之前被转换为数字,在本例中就是0
。您可以通过删除$letter +
并运行数字来验证这一点chr()
。您可以通过修复逻辑来解决问题:
先将字母转换成数字(
ord()
),然后进行加法。请注意,为了避免类似这样的简单错误,您应该始终使用这些指令: