0

我在使用 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 #####

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

4

1 回答 1

2

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

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

于 2013-01-07T17:32:38.510 回答