使用c++创建文件时,在Mac中文件名中使用%字符

% chars in file names in Mac when creating files using C++

本文关键字:文件名 字符 中文 Mac 创建 c++ 文件 使用      更新时间:2023-10-16

我在Mac OS X中使用c++创建文件名为特殊字符的文件时遇到了一些问题。

这是我的App Print:
文件名通过套接字从另一个可执行文件接收。(最烦人的事情是我没有能够在终端打印文件名。它只显示了问号。但是当我将文件名写入另一个文件的内容时,它会显示确切的字符。)

My App Print:

######
File Name before decoding : /Users/zeus/workspace/Unicodes/files/%D4%D3%C2%F3_1.txt
File Name after decoding :  /Users/zeus/workspace/Unicodes/files/????_1.txt
File Opened and Written #####

应用程序完成后,当我检查文件时,它在文件名中显示%字符。这怎么可能?

我猜您需要将字符串编码为有效的UTF-8。0xD4不是一个有效的UTF-8字符。相反,Ô的正确UTF-8编码是0xC3 0x94(它占用两个字节)。因为没有看到实际的代码,所以不可能确定,但这是我的直觉。一个更可靠的答案需要实际的代码。

看起来您的URL正在使用Latin-1 (ISO/IEC 8859-1)字符集编码转义字符。这个问题讨论了如何从ISO 8859-1转换到UTF-8。Wikipedia有一篇关于如何编码UTF-8的好文章