小编Jim*_*nty的帖子

Perl中的标准测试是什么来确定值是编码字符串还是字节序列?

Perl中用于确定值是字节序列还是编码字符串的标准测试是什么?如果它是一个编码字符串,它的字符编码是什么?

我们假设以下完整的Perl脚本:

'foo';
Run Code Online (Sandbox Code Playgroud)

如何判断这个文字字符串是一个字节序列还是某些编码中的字符串?如果它是某些字符编码中的字符串,那么它的字符编码是什么?

这个问题与Unicode或UTF-8无关.它通常与Perl中的字节与字符有关.这个问题也不是关于自动字符编码检测,这完全是一个不同的主题.

UPDATE

在初始化之后$letter,我希望Perl告诉我它认为存储在变量中的字母是什么字符编码$letter.我不认为它必然是正确的.确保Perl理解字母编码的字符是我作为程序员的责任.我明白了.但是应该有一种简单,简单的方法来测试Perl认为字符(或字符串)所在的字符编码.不存在吗?

C:\>perl -E "$letter = 'Ž'; say $letter =~ m/\w/ ? 'matches' : 'does not match'"
does not match

C:\>perl -MEncode -E "$letter = decode('UTF-8', 'Ž'); say $letter =~ m/\w/ ? 'matches' : 'does not match'"
does not match

C:\>perl -MEncode -E "$letter = decode('Windows-1252', 'Ž'); say $letter =~ m/\w/ ? 'matches' : 'does not match'"
matches

C:\>perl -MEncode -E "$letter = decode('Windows-1252', 'Ž'); $letter = encode('Windows-1252', $letter); …
Run Code Online (Sandbox Code Playgroud)

perl character-encoding

1
推荐指数
1
解决办法
1902
查看次数

标签 统计

character-encoding ×1

perl ×1