Windows – FAT-32上的Unicode文件名?
据我所知 – NTFS支持Unicode文件名(UTF-16作为Micorsoft声明?).
但官方MSDN文档对于FAT-32上用于存储文件名(文件路径)的代码页非常模糊. 这里说OEM代码页(CP437我假设)用于存储文件名:http://msdn.microsoft.com/en-us/library/windows/desktop/dd317748.aspx 但是在这里,原来CP437可能会有不同的OEM代码,其中之一是:http://msdn.microsoft.com/en-us/library/windows/desktop/dd317752.aspx 而且我们现在所有的公用事业公司都像FAT一样支持更多不同的代码页,而不仅仅是OEM代码页. 那么FAT-32文件名的实际登录是什么?这取决于FAT卷创建时的系统代码页? FAT可以支持真正的双字节字符集代码页,如UTF-16?或多字节字符设置代码页如UTF-8是限制? 更具体的问题是:
你可能需要在这里进行实验.这是一个很好的问题,我不是100%自信,但是:
“OEM代码页”,无论是系统.
不,我不相信FAT直接能够使用UTF-16或UTF-8.也就是说,Microsoft将Unicode文件名存储在带外方法中.一个文件因此有两个文件名. (这也是您可以拥有超过8.3个字符的文件名.)
传递给CreateFileW的Unicode文件名直接存储在带外文件名中.它被重新编码到OEM代码页(无论发生在系统上),并放在那里.如果不能将其转换为OEM代码页,或超过8.3个字符,Windows将调用文件FILENA?1.TXT. 这些答案的一些引用: 首先,this page告诉我们OEM代码页!= Windows代码页:
在典型的美国系统上,OEM代码页是“CP437”,但是Windows代码页是Windows-1252(FooA调用,我相信使用Windows代码页,通常是美国机器上的Windows-1252,但取决于语言环境). 如果您有一个FAT卷可用,您可以看到这一点. Windows-1252中不存在字符“Σ”(U 03a3),但是在CP437中.您可以使用dir / X查看短文件名和长文件名.使用一个名为asdfΣ.txt的文件,您将看到: ASDFΣ.TXT asdfΣ.txt 但是,使用名为“asdfΛ.txt”的文件(∧不在CP437或Windows-1252中),您将看到: ASDF~1.TXT asdf?.txt (你可能会看到?,因为cmd.exe的字体不能显示Λ.) 有关长文件名的信息,请参阅this Wikipedia article. 另外,有趣的是,如果你命名一个文件“asdf?.txt”,你可能会得到: ASDFC.TXT asdfc.txt …我不是100%肯定这里,但我认为Windows巧妙地决定替换“c”为?,并做同样的显示.如果将字体更改为不基于栅格的字体,例如Consolas,您会看到: ASDFC.TXT asdf?.txt 这就是为什么你应该使用FooW功能. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- windows-server-2008 – w3wp / asp.net高内存使用率 – 这
- windows-server-2012 – 由于磁盘空间不足而禁用Hyper-V暂停
- .net – 对于由Microsoft创建的类,“1”或“2”后缀是什么意
- windows下安装RabbitMQ
- 从我的Windows10到我的docker容器中找到我的ssh密钥
- Reset Administrator passowrd of Win server 2012
- (二) Windows 进行 Docker CE 安装(Docker Desktop)
- 如何在Windows XP中安装“GPT保护分区”?
- NetCore2.2开发环境搭建和2008R2部署环境搭建
- windows – 为什么“%~fI”参数扩展能够“访问”不存在的驱
- win10 JDK版本切换
- windows-server-2008-r2 – 我可以使用Win 2k8 R
- 是什么让Microsoft-Word生成的HTML文档代码如此之
- Windows – 使用带有RMM4的BMC尝试远程控制台重定
- Windows Installer XML变量’WixUICostingPopupO
- windows – 同一行\u0026\u0026或||看不
- windows-server-2012 – 如何正确地为文件服务器
- windows-10 – IIS报告在WLS Bash中创建的文件夹
- Windows ISO8601时间戳
- 如何在Dart中制作window.prompt?