perl如何设置编码?我想创建一个具有特殊名称的目录

时间:2011-04-07 06:19:51

标签: python perl encoding utf-8

如果我想用python做这个,代码就像:

#!usr/bin/python
import os
import sys
reload(sys)
sys.setdefaultencoding('utf-8')

path = 'H:\\Dolly. - 。.〆bear小熊-葉鏗然-ω·)~☆ぼんじ'
print(path)
os.mkdir(path)

但是我尝试使用perl,它不起作用。

#!/usr/bin/perl
use File::Path;
use utf8;
path = 'H:\\Dolly. - 。.〆bear小熊-葉鏗然-ω·)~☆ぼんじ';
make_path(path );

1 个答案:

答案 0 :(得分:3)

不幸的是,Perl在支持Windows方面非常糟糕。在这种情况下,这部分是由于Perl将文件名视为不透明的字节串而不是文本。因此,内置函数不使用(W)ide接口调用,因此您仅限于系统的“(A)NSI”编码。在大多数机器上,那是cp1252。

Win32::FindFileCreateDirectoryW的名称为CreateDirectory提供了一个界面。

#!/usr/bin/perl
use utf8;
use Win32::FindFile qw( CreateDirectory );
my $dir = 'H:\\Dolly. - 。.〆bear小熊-葉鏗然-ω·)~☆ぼんじ';
CreateDirectory($dir)
   or die $^E;

未经测试,但如果不起作用我会感到惊讶。