線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1729
推到 Plurk!
推到 Facebook!

「Unicode 補完計畫」誠徵「改檔名程式」一個。

 
s793016
一般會員


發表:3
回覆:7
積分:2
註冊:2004-03-21

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-03-23 17:56:40 IP:202.129.xxx.xxx 未訂閱
各位先進,大家好: 小弟是「unicode 補完計劃」新版的開發者之一,這是我們的網頁: http://cpatch.org/unicode/ 我們希望能徵求到限定給 win98 使用的「改檔名程式」,但由於 win9x 系統 的天生限制,所以這隻程式被迫得要功力高強的人才能寫得出來。 此類高人需具備條件如下: 1.能使用 int25h / int26h 或 vwin32.vxd 對實體裝置進行存取者。 2.具備 1.,並對 vfat 檔案系統有瞭解的人,必需能自己處理 vfat 碟中指 定目錄內的目錄內容。 嗯 ... 原理方面有點複雜,總之,我儘量說明: 1.不管是 9x/nt/2k/xp,或是 ntfs/vfat,只要有長檔名,長檔名部份絕對是 以 unicode 格式儲存在實體裝置中。 2.win9x 的核心是使用 ascii 的,並非使用 unicode。 那麼,假設某程式 x 想對長檔名「A」操作時,在 Win9x 下會發生什麼事呢? 1.程式 x 對系統要求對檔案「A」操作:程式 x 將檔案「A」的長檔名以 ascii 編碼傳給系統。 2.系統透過 ifsmgr.vxd 去實體裝置找檔:ascii 編碼的長檔名「A」,在經 過 ifsmgr.vxd 時,會先被 ifsmgr.vxd 轉碼成 unicode 編碼的長檔名『A』 ,然後 ifsmgr.vxd 再以此 unicode 編碼的長檔名『A』去實體裝置找檔。 由此可以看出,由於 Win9x 的核心為 ansi,所以如果我們想在 Win9x 下取 得 unicode 編碼的長檔名字串,除非您能請 ifsmgr.vxd 幫忙,不然就只剩 下 int25/26 一途了。 那麼我們為什麼需要這隻程式呢? 就如大家所知的,unicode 補完計畫會將 big5 日文對應 unicode 的部份, 從原先對到的 unicode 造字區 (U Fxxx),修改成對到 unicode 日文假名區 (U 3xxx)。 如果有一位使用者,他在裝補完計畫之前,有自行產生過含這類檔名的檔案 ,那麼,在他安裝補完計畫後,他以一樣的 ansi 長檔名去操作這個檔時, 因為如上所述 ifsmgr.vxd 會在內部轉碼,又因為「補完計畫」修正了這些 對應碼,所以這會導致系統出現「File Not Found」的錯誤。 解決方法就是,以「改檔名程式」將長檔名中,舊的 unicode 造字碼,改成 正確的 unicode cjk 日文假名碼。如此一來,使用者就可以如往常一般的, 正常使用他的檔案,而且也不會因此發生問題。 想讓 Internet Explorer 當掉嗎? [url=http://cpatch.org/witchfive/2/crash_ie_v1.htm]「方法一」[/url] [url=http://cpatch.org/witchfive/2/crash_ie_v2.htm]「方法二」[/url]
------
想讓 Internet Explorer 當掉嗎?

[url=http://cpatch.org/witchfive/2/crash_ie_v1.htm]「方法一」[/url]

[url=http://cpatch.org/witchfive/2/crash_ie_v2.htm]「方法二」[/url]
conundrum
尊榮會員


發表:893
回覆:1272
積分:643
註冊:2004-01-06

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-03-23 18:10:52 IP:61.221.xxx.xxx 未訂閱
http://library.succurit.com/tuts/julus-resident.txt http://www-user.tu-chemnitz.de/~heha/viewzip.cgi/hs_freeware/doslfn.zip/DOSLFN.ASM?auto=ASM VB類似問題 http://www.devcity.net/forums/faq.asp?fid=9&cat=System#TID1882 日本人 http://www.hinocatv.ne.jp/~toshiki/computer/library/doslfn/doslfnj.txt email: henrik.haftmann@e-technik.tu-chemnitz.de Download: http://www.tu-chemnitz.de/~heha/hs_freeware/doslfn.zip or http://www.simtel.net/pub/dl/62342.shtml 不知道是否有幫助 請問一下 NT4.0 下的ucharmap.exe也無法度嗎? 發表人 - conundrum 於 2004/03/23 18:26:08
s793016
一般會員


發表:3
回覆:7
積分:2
註冊:2004-03-21

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-03-23 19:13:19 IP:202.129.xxx.xxx 未訂閱
嗯 ... 範例部份是不錯,但可惜的是我們三位 (KiiAli、HO、WitchFive) 對  win32 程式寫作一事是完全不行 ... < >< > ^^a and ... 我搞不懂「改檔名程式」與「字元對應表」有什麼關係? 我想這兩者 間應該是沒有關係才對吧? 想讓
------
想讓 Internet Explorer 當掉嗎?

[url=http://cpatch.org/witchfive/2/crash_ie_v1.htm]「方法一」[/url]

[url=http://cpatch.org/witchfive/2/crash_ie_v2.htm]「方法二」[/url]
conundrum
尊榮會員


發表:893
回覆:1272
積分:643
註冊:2004-01-06

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-03-23 19:30:12 IP:61.64.xxx.xxx 未訂閱
間應該是沒有關係才對吧 喝喝 我就是也不太知道 才問問 本想說NT4.0 下的ucharmap.exe寫txt來 處理 機器人方式 有於本人 也在此站 推廣使用 unicode 補完計劃 解決unicode 部份問題 個人是在98下測試unicode 補完計劃仍未完整 s793016 如要有人幫忙 可能需再 細部說明 這樣KTOP的 包子等高手 才有可能 答答或寫範例 因此文字這程式 也不是很多人知道 門道 還是 多謝 unicode 補完計劃的各作者 熱心的促成 這unicode 補完計劃 感恩 發表人 - conundrum 於 2004/03/23 19:31:58
s793016
一般會員


發表:3
回覆:7
積分:2
註冊:2004-03-21

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-03-24 00:07:26 IP:202.129.xxx.xxx 未訂閱
引言:有於本人 也在此站 推廣使用 unicode 補完計劃
謝謝。 <>< face="Verdana, Arial, Helvetica">引言:個人是在98下測試unicode 補完計劃仍未完整 可否請大致說明一下這部份呢?
引言:s793016 如要有人幫忙 可能需再 細部說明
嗯 ... 我再說明一下好了,win9x 下,檔案的操作是以「長檔名」檔案為主的,而非「短檔名」,所以只要該檔長檔名中的 unicode 字元都能被對應到 local ascii 下,而不會出現「?」或「ˍ」的話,這個檔就能直接給 win9x 處理。這部份可以參考此討論串。 嗯 ... 我再以「?」說明一下為何需要改檔名好了。 假設有一 98 user,在沒裝補完計畫的情形下,他製造了一個檔叫做「?.1234」,但因為此時 big5 假名還是錯誤的對應到 unicode 造字區,所以這個檔的長檔名在實體磁碟中會以「F8 F6 2E 00 31 00 32 00 33 00 34 00」存在。當此 user 以「?.1234」向 win98 要求操作檔案時,98 會直接以 ascii 字串送出檔名為「C6 E8 2E 31 32 33 34」透過 ifsmgr.vxd 去作這個動作,此時 ifsmgr.vxd 內部會透過 unicode.bin 這個參考檔先把它轉成 unicode 的「F8 F6 2E 00 31 00 32 00 33 00 34 00」,再去對磁碟上指定位置找這個檔。目前為止不會有錯誤,一切 ok。 再來,當此 98 user 裝了補完計畫後。因為我們沒有 98 用的改檔名程式,所以這個檔的長檔名在實體磁碟中還是會以「F8 F6 2E 00 31 00 32 00 33 00 34 00」存在。當此 user 以「?.1234」向 win98 要求操作檔案時,98 會直接以 ascii 字串送出檔名為「C6 E8 2E 31 32 33 34」透過 ifsmgr.vxd 去作這個動作,此時 ifsmgr.vxd 內部會透過 unicode.bin 這個參考檔先把它轉成 unicode 的「42 30 2E 00 31 00 32 00 33 00 34 00」,再去對磁碟上指定位置找這個檔。但由於磁碟上的檔案,其檔名是「F8 F6 2E 00 31 00 32 00 33 00 34 00」,而非「42 30 2E 00 31 00 32 00 33 00 34 00」,所以 win98 會直接回報「File Not Found」。 我的想法是,win9x 下若是使用一般正規方法,想要碰觸到原始的 unicode 編碼長檔名根本不可能,因為系統內部自動轉碼的關卡太多了。 唯一可行途徑是使用 doslfn 一類程式的作法,自己用 int 25 讀出目錄磁區,如此才能取得正確的 unicode 長檔名,取到正確的長檔名後,再經由查表代換產生出新的 unicode 長檔名,並且用 int 26 將新的長檔名寫回目錄磁區,如此即可完成針對 unicode 長檔名的改名動作。 == 想讓 Internet Explorer 當掉嗎? 「方法一」http://cpatch.org/witchfive/2/crash_ie_v1.htm 「方法二」http://cpatch.org/witchfive/2/crash_ie_v2.htm 發表人 - s793016 於 2004/03/24 00:12:38
------
想讓 Internet Explorer 當掉嗎?

[url=http://cpatch.org/witchfive/2/crash_ie_v1.htm]「方法一」[/url]

[url=http://cpatch.org/witchfive/2/crash_ie_v2.htm]「方法二」[/url]
conundrum
尊榮會員


發表:893
回覆:1272
積分:643
註冊:2004-01-06

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-03-24 01:07:35 IP:61.64.xxx.xxx 未訂閱
s793016 兄的問題 實在是很 艱難 不過 個人想有一位 站內大佬的分享 【發表】【TC】X2File 解 DDI, DCF 的工具(with source) http://delphi.ktop.com.tw/topic.php?TOPIC_ID=43009 也許這也不是 你要的 不過 不太知道 這位 國寶級 的大栳不知有沒有時間 可能你要問問他看看
orson
中階會員


發表:5
回覆:135
積分:58
註冊:2002-07-11

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-03-24 17:50:45 IP:211.74.xxx.xxx 未訂閱
引言: 再來,當此 98 user 裝了補完計畫後。因為我們沒有 98 用的改檔名程式,所以這個檔的長檔名在實體磁碟中還是會以「F8 F6 2E 00 31 00 32 00 33 00 34 00」存在。當此 user 以「?.1234」向 win98 要求操作檔案時,98 會直接以 ascii 字串送出檔名為「C6 E8 2E 31 32 33 34」透過 ifsmgr.vxd 去作這個動作,此時 ifsmgr.vxd 內部會透過 unicode.bin 這個參考檔先把它轉成 unicode 的「42 30 2E 00 31 00 32 00 33 00 34 00」,再去對磁碟上指定位置找這個檔。但由於磁碟上的檔案,其檔名是「F8 F6 2E 00 31 00 32 00 33 00 34 00」,而非「42 30 2E 00 31 00 32 00 33 00 34 00」,所以 win98 會直接回報「File Not Found」。 我的想法是,win9x 下若是使用一般正規方法,想要碰觸到原始的 unicode 編碼長檔名根本不可能,因為系統內部自動轉碼的關卡太多了。
反向思考,寫一個程式,把所有檔名掃出來,如果有位在unicode造字段的檔名,就轉換成日文假名段去,是不是也可以啊? 可以的話,會不會簡單一點? Orson
s793016
一般會員


發表:3
回覆:7
積分:2
註冊:2004-03-21

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-03-24 18:52:09 IP:202.129.xxx.xxx 未訂閱
引言: 反向思考,寫一個程式,把所有檔名掃出來,如果有位在unicode造字段的檔名,就轉換成日文假名段去,是不是也可以啊? 可以的話,會不會簡單一點?
事實上,現在就是在「徵求」這隻程式啊 ... 而這隻程式必需要能取到原始的
------
想讓 Internet Explorer 當掉嗎?

[url=http://cpatch.org/witchfive/2/crash_ie_v1.htm]「方法一」[/url]

[url=http://cpatch.org/witchfive/2/crash_ie_v2.htm]「方法二」[/url]
orson
中階會員


發表:5
回覆:135
積分:58
註冊:2002-07-11

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-03-25 16:29:42 IP:211.74.xxx.xxx 未訂閱
引言:
引言: 反向思考,寫一個程式,把所有檔名掃出來,如果有位在unicode造字段的檔名,就轉換成日文假名段去,是不是也可以啊? 可以的話,會不會簡單一點?
事實上,現在就是在「徵求」這隻程式啊 ... 而這隻程式必需要能取到原始的 >< face="Verdana, Arial, Helvetica"> 當我只是用迴圈來取出所有檔案的檔名,我是不用管原檔名是什麼,我唯一要做的事情,就是把抓出來的檔名來跟UNICODE原來的造字段比對,只要match就換成正確的日文段。 理論上啦。 所以問題就會是,到底findfile會傳回來的是舊的檔名還是新的(以hex code來看)?如果是舊的就好搞定,新的的話,真的只能用int來做了。 啊為啥不是INT 21啊? 已經10年沒碰組合語言了
s793016
一般會員


發表:3
回覆:7
積分:2
註冊:2004-03-21

發送簡訊給我
#10 引用回覆 回覆 發表時間:2004-03-25 17:41:50 IP:202.129.xxx.xxx 未訂閱
引言:當我只是用迴圈來取出所有檔案的檔名,我是不用管原檔名是什麼,我唯一要做的事情,就是把抓出來的檔名來跟UNICODE原來的造字段比對,只要match就換成正確的日文段。 理論上啦。
完全正確,我們的「改檔名程式」就是在作這件事。
引言:所以問題就會是,到底findfile會傳回來的是舊的檔名還是新的(以hex code來看)?
因為我們指定 win98 環境,所以,在 win98 下,findfile「?.1234」如果有找到的話,就我所知只會得到 local ascii 編碼的「C6 E8 2E 31 32 33 34」。
引言:如果是舊的就好搞定,新的的話,真的只能用int來做了。 啊為啥不是INT 21啊?
int 21 可以直接讀寫指定磁區嗎?
引言:已經10年沒碰組合語言了< face="Verdana, Arial, Helvetica"> 可以用 delphi 寫啊,這邊有 int25/26 delphi 的部份範例 這邊有 int25/26 VB 的完整範例 想讓 Internet Explorer 當掉嗎? 「方法一」http://cpatch.org/witchfive/2/crash_ie_v1.htm 「方法二」http://cpatch.org/witchfive/2/crash_ie_v2.htm 發表人 - s793016 於 2004/03/25 17:53:46
------
想讓 Internet Explorer 當掉嗎?

[url=http://cpatch.org/witchfive/2/crash_ie_v1.htm]「方法一」[/url]

[url=http://cpatch.org/witchfive/2/crash_ie_v2.htm]「方法二」[/url]
orson
中階會員


發表:5
回覆:135
積分:58
註冊:2002-07-11

發送簡訊給我
#11 引用回覆 回覆 發表時間:2004-03-26 15:16:20 IP:211.74.xxx.xxx 未訂閱
引言:
引言:所以問題就會是,到底findfile會傳回來的是舊的檔名還是新的(以hex code來看)?
因為我們指定 win98 環境,所以,在 win98 下,findfile「?.1234」如果有找到的話,就我所知只會得到 local ascii 編碼的「C6 E8 2E 31 32 33 34」。
我想說的是findfile(*.*) ??? ?? Orson
jimmy_and_you
初階會員


發表:20
回覆:74
積分:33
註冊:2003-05-12

發送簡訊給我
#12 引用回覆 回覆 發表時間:2004-03-26 18:00:04 IP:203.70.xxx.xxx 未訂閱
之前有稍微研究過VFAT,跟UNICODE,對於這個計畫我有一點不明瞭之處,當你從檔案系統讀回磁區的資料時,你根本無法知他原來的長檔名的UNICODE是中文,韓文或是日文....等等,如何能正確復原檔名呢??? 我之前有做過在DOS底下直接DISKCOPY(直接讀取磁碟區)的程式,只使用過INT 0x13不知道....前面幾位大大提的int 25,26的用法ㄟ,等我研究一番再跟你報告. PS:請問誰有NTFS的白皮書,我只有VFAT的;還有中文UNICODE字集是用CP950嗎?
s793016
一般會員


發表:3
回覆:7
積分:2
註冊:2004-03-21

發送簡訊給我
#13 引用回覆 回覆 發表時間:2004-03-26 18:28:55 IP:202.129.xxx.xxx 未訂閱
to orson:  sorry, 我不會寫程式,您要不要寫個小程式,然後我們來測測看?  >< face="Verdana, Arial, Helvetica">引言:之前有稍微研究過VFAT,跟UNICODE,對於這個計畫我有一點不明瞭之處,當你從檔案系統讀回磁區的資料時,你根本無法知他原來的長檔名的UNICODE是中文,韓文或是日文....等等,如何能正確復原檔名呢??? unicode 下沒有分什麼「中文、日文、韓文」的,一律一字一碼,這部份請自行到 unicode.org 去作功課囉。 而且也根本不需要分啊,因為我們是要直接對 unicode 操作,也就是 ren old_unicode_filename to new_unicode_filename,並沒有字碼轉換,所以不會有這些問題。
引言:我之前有做過在DOS底下直接DISKCOPY(直接讀取磁碟區)的程式,只使用過INT 0x13不知道....前面幾位大大提的int 25,26的用法ㄟ,等我研究一番再跟你報告.
謝謝。勞駕您了。
引言:PS:請問誰有NTFS的白皮書,我只有VFAT的;還有中文UNICODE字集是用CP950嗎?
unicode 沒有分這些東西。 cp950 的 cp 指的是 CodePage,就是 m$ 稱呼 local ascii 的方式。 至於那個 950 則是 Big5 的 CodePage 編號。 S-jis 的 CodePage 編號是 932。 GB2312 的 CodePage 編號是 936。 想讓 Internet Explorer 當掉嗎? 「方法一」http://cpatch.org/witchfive/2/crash_ie_v1.htm 「方法二」http://cpatch.org/witchfive/2/crash_ie_v2.htm 發表人 - s793016 於 2004/03/26 18:30:25
------
想讓 Internet Explorer 當掉嗎?

[url=http://cpatch.org/witchfive/2/crash_ie_v1.htm]「方法一」[/url]

[url=http://cpatch.org/witchfive/2/crash_ie_v2.htm]「方法二」[/url]
jimmy_and_you
初階會員


發表:20
回覆:74
積分:33
註冊:2003-05-12

發送簡訊給我
#14 引用回覆 回覆 發表時間:2004-05-18 15:15:13 IP:61.70.xxx.xxx 未訂閱
引言: to orson: sorry, 我不會寫程式,您要不要寫個小程式,然後我們來測測看? >< face="Verdana, Arial, Helvetica">引言:之前有稍微研究過VFAT,跟UNICODE,對於這個計畫我有一點不明瞭之處,當你從檔案系統讀回磁區的資料時,你根本無法知他原來的長檔名的UNICODE是中文,韓文或是日文....等等,如何能正確復原檔名呢???
unicode 下沒有分什麼「中文、日文、韓文」的,一律一字一碼,這部份請自行到 unicode.org 去作功課囉。 而且也根本不需要分啊,因為我們是要直接對 unicode 操作,也就是 ren old_unicode_filename to new_unicode_filename,並沒有字碼轉換,所以不會有這些問題。
引言:我之前有做過在DOS底下直接DISKCOPY(直接讀取磁碟區)的程式,只使用過INT 0x13不知道....前面幾位大大提的int 25,26的用法ㄟ,等我研究一番再跟你報告.
謝謝。勞駕您了。
引言:PS:請問誰有NTFS的白皮書,我只有VFAT的;還有中文UNICODE字集是用CP950嗎?
unicode 沒有分這些東西。 cp950 的 cp 指的是 CodePage,就是 m$ 稱呼 local ascii 的方式。 至於那個 950 則是 Big5 的 CodePage 編號。 S-jis 的 CodePage 編號是 932。 GB2312 的 CodePage 編號是 936。 想讓 Internet Explorer 當掉嗎? 「方法一」http://cpatch.org/witchfive/2/crash_ie_v1.htm 「方法二」http://cpatch.org/witchfive/2/crash_ie_v2.htm 發表人 - s793016 於 2004/03/26 18:30:25 目前我已經試到在Win9x/2k/xp可以直接讀取硬碟磁區,也可以直接對Fat檔案去存取,能否附上Unicode 及 Big5 之間(CP950<-->CP932) 的轉換表讓我來試試..
s793016
一般會員


發表:3
回覆:7
積分:2
註冊:2004-03-21

發送簡訊給我
#15 引用回覆 回覆 發表時間:2004-05-19 20:40:09 IP:202.129.xxx.xxx 未訂閱
引言:目前我已經試到在Win9x/2k/xp可以直接讀取硬碟磁區,也可以直接對Fat檔案去存取,能否附上Unicode 及 Big5 之間(CP950<-->CP932) 的轉換表讓我來試試..
謝謝,辛苦了 ... 嗯 ... 理論上是不需用到 > > href="http://cpatch.org/unicode/">http://cpatch.org/unicode/的「工具」區,抓一個「檔名修改程式」回來,解開後,拿裏面的 uc-o2n.tbl 來用,這是我們使用的 unicode <-> unicode 對照表 (已更新至 2.4 alpha 3)。 uc-o2n.tbl 為一純文字檔案,檔案內容大致上長得像這樣:
引言: EB75 0075 : : F817 FFE2 ========== E024 7232 : : F848 FF9F
其中,「左半」與「右半」皆為 unicode 碼,中間以空白字元隔開;左半代表的是舊的造字區字,右半則是經補完重新對應後的 unicode 字。 這個檔中間有一條「分隔線」,資料讀取時請對其特別處理。 如果您要作「造字 -> 新字碼」 ============================ 請讀取全檔,並將檔名中「左半」的字全部代換成「右半」。 如果您要作「造字 <- 新字碼」 ============================ 請讀取全檔中分隔線以下的對應資料,並將檔名中「右半」的字全部代換成「左半」。 想讓 Internet Explorer 當掉嗎? 「方法一」http://cpatch.org/witchfive/2/crash_ie_v1.htm 「方法二」http://cpatch.org/witchfive/2/crash_ie_v2.htm
------
想讓 Internet Explorer 當掉嗎?

[url=http://cpatch.org/witchfive/2/crash_ie_v1.htm]「方法一」[/url]

[url=http://cpatch.org/witchfive/2/crash_ie_v2.htm]「方法二」[/url]
s793016
一般會員


發表:3
回覆:7
積分:2
註冊:2004-03-21

發送簡訊給我
#16 引用回覆 回覆 發表時間:2004-12-15 16:35:21 IP:163.29.xxx.xxx 未訂閱
嗯啊 ... 我又來了。< > 看來上次的東西真的太難了 ... < > 這次是這樣,我想我們換個作法好了。這次需求的程式不會用到非常高深的技巧,內容只是要處理一個文字檔,然後 filter 出我們要的資料,以指定格式存成另一個文字檔 (或許再加上存到指定的位置) ,就這樣而已,並不困難的。 那麼,這次有人要報名嗎? 想讓
------
想讓 Internet Explorer 當掉嗎?

[url=http://cpatch.org/witchfive/2/crash_ie_v1.htm]「方法一」[/url]

[url=http://cpatch.org/witchfive/2/crash_ie_v2.htm]「方法二」[/url]
系統時間:2024-07-06 20:58:30
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!