【发布时间】:2011-11-04 13:51:42
【问题描述】:
我正在努力创建一个包含非 ascii 字符的文件。
如果使用0 作为参数调用以下脚本,但使用1 调用时会死机,则以下脚本可以正常工作。
错误消息是 open: Invalid argument at C:\temp\filename.pl 第 15 行。
脚本在cmd.exe内启动。
我希望它编写一个文件名(取决于参数)äöü.txt 或äöü☺.txt。但我无法创建包含笑脸的文件名。
use warnings;
use strict;
use Encode 'encode';
# Text is stored in utf8 within *this* file.
use utf8;
my $with_smiley = $ARGV[0];
my $filename = 'äöü' .
($with_smiley ? '☺' : '' ).
'.txt';
open (my $fh, '>', encode('cp1252', $filename)) or die "open: $!";
print $fh "Filename: $filename\n";
close $fh;
我可能遗漏了一些对其他人来说很明显的东西,但我找不到,所以如果有任何解决这个问题的建议,我将不胜感激。
【问题讨论】:
-
如果让 open 死掉会得到什么错误信息?
-
@mugen:我已经更改了脚本让它死掉并添加了错误消息。
-
cp1252 是怎么回事?该代码页是否包含此字符?您绝对不是在这里创建 UTF8 文件名!
-
为什么需要一个包含 Unicode 字符的文件名?也许你可以解决这个问题。
标签: windows perl utf-8 filenames cmd