使用C ++创建文件时,Mac中文件名的%chars

时间:2013-01-07 17:23:25

标签: c++ macos unicode character-encoding

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

这是我的应用程序打印:
通过套接字从另一个可执行文件接收文件名。 (最令人讨厌的是我终于无法在终端中打印文件名。它只显示问号。但是当我将文件名写入另一个文件的内容时,它会显示确切的字符。)

我的应用打印:

######
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 #####

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

1 个答案:

答案 0 :(得分:2)

我的猜测是你需要将你的字符串编码为有效的UTF-8。 0xD4不是有效的UTF-8字符。相反,Ô的正确UTF-8编码是0xC3 0x94(它需要两个字节)。不可能肯定地说,因为没有看到实际的代码,但这是我的预感。更加可靠的答案需要实际的代码。

您的网址似乎是使用Latin-1 (ISO/IEC 8859-1) character set对转义字符进行编码。 This question talks about how to convert from ISO 8859-1 to UTF-8Wikipedia has a good article on how UTF-8 is encoded