如何使用Perl在Windows中创建unicode文件名

前端之家收集整理的这篇文章主要介绍了如何使用Perl在Windows中创建unicode文件名前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有以下代码
use utf8;
open($file,'>:encoding(UTF-8)',"さっちゃん.txt") or die $!;
print $file "さっちゃん";

但是我得到的文件名是ã•ã,ã,ã.,.txt

我想知道是否有一种方法可以让我的工作正如我所期望的那样(意思是我有一个unicode文件名),这不需要使用Win32 :: API,Win32API :: *或移动到另一个平台并使用Samba共享来修改文件.

目的是确保我们没有任何需要加载的Win32特定模块(甚至是有条件的).

解决方法

Perl将文件名视为不透明的字节字符串.它们需要根据“语言环境”的编码(ANSI代码页)进行编码.

在Windows中,这通常是cp1252.它由GetACP系统调用返回. (前缀“cp”).但是,cp1252不支持文字符.

Windows还提供“Unicode”又称“宽”接口,但Perl不提供使用内置*的访问权限.但是,您可以使用Win32API :: File的CreateFileW. IIRC,您还需要自己编码文件名.如果是这样,您将使用UTF-16le作为编码.

* – Perl对Windows的支持在某些方面很糟糕.

猜你在找的Perl相关文章