2013-01-07 21 views
0

我在使用C++在Mac OS X中創建具有特殊字符的文件名的文件時遇到了一些問題。使用C++創建文件時,Mac中的文件名中存在字符%

這是我的應用程序打印:
文件名是從另一個可執行文件通過套接字接收的。 (最令人討厭的是我終端上一直沒能打印文件名,只顯示問號。但是當我把文件名寫到另一個文件的內容時,它顯示了確切的字符。)

我的應用程序打印:

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

應用程序完成後,當我檢查的文件,它顯示在文件名字符%。這怎麼可能..?

+0

文件名應該是什麼? '「」σΟ'? ''「¬Û'? – Esailija

+0

@Esailija文件名應該是:ÔÓÂó。 – Zeus

+0

那是Windows代碼頁,而不是Mac OS。 – Esailija

回答

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

+0

是的,在Mac OS X上[「所有的BSD系統函數都希望它們的字符串參數使用UTF-8編碼,而不是其他任何東西。」](https://developer.apple.com/library/mac/#documentation/MacOSX/ Conceptual/BPInternational/Articles/FileEncodings.html) – bames53

+0

如何在C++中將文件名編碼爲有效的UTF-8 ..?對不起,我知道這是一個愚蠢的問題。但是整天我都厭倦了這個問題,我不能直視。你能否指點我正確的方向。 – Zeus

+0

@Zeus:我添加了一些關於如何從ISO 8859-1轉換爲UTF-8的鏈接。如果你仍然迷路,留下評論,我會添加更多。 – Cornstalks

相關問題