如何检查unicode文件名是否存在?

CJ7*_*CJ7 2 unicode perl filenames solaris

根据perlunicode,-e不能使用unicode文件名,所以如何检查是否存在unicode文件名?在Solaris系统上.

ike*_*ami 7

在unix系统上,文件名只是字节序列.您必须传递-e与实际文件名相同的字节序列.很有可能它是您看到的文本的UTF-8编码的这些字节.因此,如果您有Unicode代码点("已解码文本"),请尝试以下操作:

utf8::encode( my $fn = $decoded_text );
say -e $fn ? "exists" : "doesn't exist";
Run Code Online (Sandbox Code Playgroud)

如有必要,请不要忘记添加目录名称.

  • @ user1541776,在unix中,任何NUL终止的字节序列都是有效路径.在Windows中,它们是编码文本,编码为UTF-16le或机器的"ANSI"编码,具体取决于所使用的API.语义(允许哪些字符)与解码版本相关联,而不是如何编码. (2认同)
  • iso-8859-1比Windows特定编码更可能是iso-8859-1. (2认同)