Bri*_*ndy 15 c++ unicode fopen
有没有一种标准的方法来使用unicode字符串文件路径进行fopen?
nwe*_*hof 12
不,没有标准的方法.操作系统之间存在一些差异.以下是不同操作系统处理非ASCII文件名的方式.
在Linux下,文件名只是一个二进制字符串.大多数现代发行版的惯例是将UTF-8用于非ASCII文件名.但在开始时,将文件名编码为ISO-8559-1是很常见的.基本上由每个应用程序来选择编码,因此您甚至可以在同一文件系统上使用不同的编码.该LANG
环境变量可以给你一个提示的编码方式是什么.但是现在,你可以在任何地方假设UTF-8.
但这并非没有问题,因为包含无效UTF-8序列的文件名在大多数Linux文件系统上完全有效.如果你只支持UTF-8,你会如何指定这样的文件名?理想情况下,您应该支持UTF-8和二进制文件名.
OS X上的HFS文件系统在内部使用Unicode(UTF-16)文件名.大多数C(和POSIX)库函数都fopen
接受UTF-8字符串(因为它们是8位兼容的)并在内部进行转换.
Windows API使用UTF-16作为文件名,但fopen
仅支持ASCII.许多C库函数都有一个接受UTF-16的非标准等价物(wchar_t
在Windows上).例如,_wfopen
而不是fopen
.
归档时间: |
|
查看次数: |
9916 次 |
最近记录: |