2

我正在使用 Perl open在 Solaris 10 上打开新文件,如下所示:

open($fh, ">$filePath");

使用此调用,我的系统上的默认文件字符编码是什么?

locale 命令的输出如下所示

LANG=
LC_CTYPE="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_COLLATE="C"
LC_MONETARY="C"
LC_MESSAGES="C"
LC_ALL=
4

1 回答 1

2

这个问题不像我想象的那么容易回答。

默认编码为raw,适用于二进制数据。序数值低于 256 的任何字符都按原样传递:

$ perl -e 'print chr(0xFF)' | od -c
00000000 377
00000001

奇怪的是当你尝试写一个高于序数值 255 的字符时会发生什么。然后看起来你得到了 UTF-8 编码。

$ perl -e 'print chr(0x100)' | od -c
00000000 304 200
00000002

我不知道在哪里或是否记录了这种行为。

于 2013-02-19T18:04:31.743 回答