Arc*_*ano 6 windows unicode perl
我有以下代码
use utf8;
open($file, '>:encoding(UTF-8)', "?????.txt") or die $!;
print $file "?????";
Run Code Online (Sandbox Code Playgroud)
但我得到的文件名为ã•ã,ã°,".",".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的支持在某些方面很糟糕.
| 归档时间: |
|
| 查看次数: |
2910 次 |
| 最近记录: |