當我嘗試使用open()函數在LINUX中創建文件時,出現錯誤'-1'包含擴展字符(例如:Björk.txt)。這裏,文件包含特殊字符ö(ASCII 148)在Linux中使用擴展字符(128-255)的open()函數返回-1錯誤
我使用下面的代碼:
char* szUnixPath
/home/user188/Output/Björk.txt
open(szUnixPath, locStyle, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH);
我總是得到-1錯誤,並且NO FILE被創建。
當操作系統遇到ASCII 148時,會引發錯誤。如果我使用波浪號〜(ASCII 126,例如:北京〜rk.txt)
功能相同工作完全正常或低於ASCII值128
任何其它字符可有人解釋爲什麼我得到的 - 只有在特殊字符範圍在128-255之間的文件名時出現1錯誤?
不確定,但您可能需要使用UTF-8編碼。 –
我試過UTF-8編碼。沒有工作!那麼,我使用CP437 – adam
你如何輸入文件的名稱?從控制檯或GUI輸入?在源代碼中進行硬編碼?您確定您傳遞給'open'的文件名的編碼與文件系統爲其文件名使用的編碼相同嗎? –