從 Thompson 的 ESC 與 "成功\n" 談 tag-type

看板Programming作者時間18年前 (2007/03/12 10:32), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
> ==>發信人: tester@Evergreen (try or test), 信區: programming > 先不談這個擴充功能(extended machine)的問題, 先問: 電腦程式語言 > 碰到中文BIG5碼是否能區分鑑別, 加以不同對待(這算擴充功能吧 !)的問題. > 例如: > char*f="敬祝成功\n 宏圖大展\n"; > main() > { > printf(f,10); > } > 得到的顯示結果是: > 敬祝成功n 宏圖大展 > 而不是 > 敬祝成功 > 宏圖大展 > ================ 如果只是要正確列印出來, 方法多得很, 不必要求這個 C compiler 認得 中文 BIG5 碼, 這就是今天的現狀. 但如果這個字串是要當 keyword 做 exactly search 時, 如 "成功大學" 而這字串裡卻有個 "\" 藏在裡面, 後續的 search 程式是否會出錯 ? 現在的中文域名, 如 "成功.tw" 就有類似的疑問, IETF 目前的解決方案 是 ACE (ASCII Code Encode), 相關的 RFC 有很多個, 主要的是 "xn--" 標 記開頭的 punycode. 這個中文域名的概念如 "成功大學.tw" 是被先 pre-processing 轉換為 xn--xfrw5m31b36k.tw 的英文字串, 因此不再有 ESC char 的問題, 接收的程 式也不再有 是否"非英文" 的問題, 因為已被包裝為 xn-- 開頭的 "全英數" 字串, 要拆開來看時就需要 post-processing , 還原或轉換為使用者顯示程式 對應的字形碼別. 至於繁簡體字形, 如果註冊域名時, 指名繁或簡的代表字是 那一字串就可從註冊處的資料查出該轉為那種對應的繁或簡字形, 不查不轉也 可以, 當然就是 xn-- 那串字符以 punycode 還原的 unicode 碼字形. 如果要讓 雲林科大.tw 與 云林科大.tw 都能代表同一個網址, 目前的方 法就是負責中文域名註冊與處理的單位必須把這兩筆一同註冊且指到同一個位 址. 把中文轉換成英文程式原來認得的英文形式, 可以視為是將前/後處理模組 與中間模組使用一個特定英文界面與範圍來溝通. 這裡的 xn-- 是個特定的標 記, 如同 "ESC \" 是不能再隨意混用. 利用前後處理與有標記的轉換, 那個原英文程式(如 C-Compiler)也就能分 工合作, 好像(虛擬地)也能正確處理繁簡中文了. 這就組成一個 extended machine. Object Oriented Programming Language 是不是也使用 message passing 也是在應用這種概念做降低藕合度使之可獨立分工的事 ? -- ◎ Origin: 中央松濤站□bbs.csie.ncu.edu.tw From: 140.115.6.234
文章代碼(AID): #15zBka00 (Programming)
文章代碼(AID): #15zBka00 (Programming)