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 次 |
| 最近记录: |