[問題] 取得非unicode編碼的檔案名

看板C_and_CPP作者 (老巴)時間14年前 (2010/12/02 14:06), 編輯推噓3(308)
留言11則, 3人參與, 最新討論串1/1
想請教各位 假設有個檔案 檔名使用非unicode編碼 我也不知道是哪一種 我有辦法直接取得未decode的檔名byte[]嗎 依我的理解 要是取得的是字串都已經過錯誤的decode 可能會變亂碼無法轉回正確的檔名 如果是檔案內容就很好解決...可是我要的是檔名 還是說現在OS檔名多已用unicode編碼這個問題已可忽略? 感謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.192.91.187

12/02 22:58, , 1F
自己讀原始資料,要先用CreateFile()開磁碟機,再用
12/02 22:58, 1F

12/02 22:59, , 2F
ReadFile()讀原始資料,然後依照檔案格式去解讀出檔名...
12/02 22:59, 2F

12/02 22:59, , 3F
NTFS本來儲存檔名的原始記錄,就單純的用 UTF-16LE 編碼
12/02 22:59, 3F

12/02 23:00, , 4F
所以本來就是 Unicode,你要用 ANSI API 他才會去轉換
12/02 23:00, 4F

12/02 23:07, , 6F
修正:然後依照 檔案系統的格式
12/02 23:07, 6F

12/03 03:41, , 7F
把unicode轉回系統locale對應的編碼 再從正確的編碼轉
12/03 03:41, 7F

12/03 03:41, , 8F
是有可能會轉不回來
12/03 03:41, 8F

12/03 03:43, , 9F
資訊在當初存進磁碟的時候就轉丟了
12/03 03:43, 9F

12/03 20:33, , 10F
感謝樓上2位 不過依照檔案系統的格式去解讀出檔名這點有沒
12/03 20:33, 10F

12/03 20:34, , 11F
有什麼能參考的資訊 小弟本行是java C/C++有點弱orz
12/03 20:34, 11F
文章代碼(AID): #1CzwVDZK (C_and_CPP)