我在使用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。怎么可能..?
答案 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-8。 Wikipedia has a good article on how UTF-8 is encoded