http://uao.cpatch.org/index.php?%E5%8E%9F%E7%90%86%E8%A3%9C%E5%85%85
檔名:?????.txt
長檔名:C6E8C6E8C6E8C6E8C6E82E747874 → CodePage 格式
您可以看到,雖然該應用程式有取到長檔名,但是他的內容已經被系統自動轉碼過了,本
質已經變了。如果您這時命令應用程式去操作這個檔,那麼系統會在收到應用程式要求後
,再對該 CodePage 長檔名在內部作一次轉換的動作,於是最後系統會用這個檔名去操作
您的檔案:
檔名:?????.txt
長檔名:30423042304230423042002E007400780074 → Unicode 格式
但是您磁碟上的檔名並不是上面這個,所以最終結果就會發生系統回報「找不到檔案」、
「無法開啟」的錯誤訊息。
要解決這個問題,在 2K/XP 下可以透過系統提供的 Unicode API 去作改檔名的動作,讓
您的舊檔名能正確對應到轉換過的 Unicode 字碼,這支程式我們也有提供,叫作
UcFileRenamer?。98 下則到目前為止沒有簡單的方法可以處理這個,因為 98 下沒有
Unicode API,或許您會說微軟有提供所謂的 Unicode Layer,但那個也只是一個
Unicode API 的接收器而已,要使用它應用程式要在編譯時把它加入一起編,重點是他
最後還是會把收到的 Unicode API 轉換過後,用舊系統 API去作您要它作的事,回傳值
也一樣會在內部轉換過後再傳回去應用程式手上,所以這個東西對我們的需求,根本沒用
。
最後回應一下 MozTW 最近在提的,讓補完計畫只作 Big5 → Unicode 對應,而
Unicode → Big5 的對應則回歸微軟 CP950,基本上 FireFox?/Mozilla 本身不會碰觸
檔案系統,所以他可以這麼搞,但補完計畫並不一樣,因為補完計畫改的是系統本身在使
用的 Big5 ←→ Unicode 對照表,所有跟 Unicode 有關的東西都會因此被影響到,包括
上面提的「檔案操作」問題,所以補完計畫在這部份必需實作雙向對應。
--
志不定 心不安
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 124.8.128.244