特殊名字符號范文
時間:2023-03-21 11:54:15
導語:如何才能寫好一篇特殊名字符號,這就需要搜集整理更多的資料和文獻,歡迎閱讀由公務員之家整理的十篇范文,供你借鑒。
篇1
2、〢ヽ粘人的心動
3、ヤ凍結的紙鶴
4、ˇ浮夸爺們er
5、╱╳灬英雄ゞ
6、〝ゞ觸動ㄣ
7、oo後~大亼物
8、︶ㄣ幻謊言式愛情
9、answer廝守 °
篇2
關鍵詞:公式 ASCIIMathML MathML MathPlayer
中圖分類號:TP391 文獻標識碼:A 文章編號:1672-3791(2015)09(a)-0002-02
通過網絡傳播、學習數學知識,在線交流,已成為便捷、潮流、重要的手段,都涉及數學公式在Web中輸入、處理、顯示的問題。MathML是W3C制定的基于XML的WWW數學信息交換標準,從表義(Content)和表現(Presentation)兩方面完整地表達了數學公式。
Peter Jipsen編寫的ASCIIMathML.js[1]腳本,兼容LaTex語法,實現表義到表現的轉化。Design Science公司的網頁公式引擎MathPlayer[2],實現了網頁上MathML的顯示。兩者結合,完美地實現了從字符串到公式的網頁顯示。
1 ASCIIMathML語義符號
ASCIIMathML的公式語義,是一種基于ASCII碼的線性字符串格式,與Design Science公司的另一軟件MathType的公式表義語法基本一致。在安裝了MathType的MS Word中,公式有焦點時,按鍵Alt+\即可在公式和語義串之間切換。
1.1 ASCIIMAthML基本語義符號
(1)定界符:同時也是與普通文本區分的標識符。公式內容界定在一對$…$或`...`中。
(2)保留字:函數名如sin,表達式如lim,希臘字母如Pi,特殊符號如infty。
(3)括號:{},表示其中內容為一整體。如\lim_{x->0}中x->0作為整體置于lim底部。
(4)語義符:/表分式,_表上標,^表下標,&表矩陣元素之間隔,\\表矩陣元素換行。
(5)轉義符:\,表示其后字符(串)為保留字或特定含義,如\$表美元符,\frac表分式。
(6)其他數學符號:如+-表示±,!=表≠,oo表示∞,\in表示等等。
1.2 ASCIIMAthML的表形語義符號
見表1。
2 ASCIIMathML的基本解析結果
2.1 ASCIIMathML的輔助標簽
ASCIIMathML的輔助標簽界定math對象中的單個字符,或界定行、塊內容。其結構標簽見表1之語義。
(1)單個ascii字母字符或保留字串(a-z,A-Z及保留字):.
(2)單個ascii數字字符(0-9): .
(3)單個ascii其他字符(+,-,=,,#,%,.,:,’,”等等): .
(4)空格:
(5)行.內容塊定界符:…
2.2 ASCIIMathML主要解析結果示例
ASCIIMathML完成了ascii文本串的解析到MathML之DOM對象樹的創建,它是表現(Pretentatin)所代表的公式二維結構在頁面上的體現。表2列舉了常見公式的解析結果。
在ASCIIMathML的轉換中,首先引用自定義元素的名空間,創建對象,為內部子節點指定樣式(以的形式),然后是表2中實質性具體解析結果。
3 ASCIIMathML的運行過程
在HTML文件的任意位置(推薦在var _userid = '';var _siteid =669;var _istoken = 1;var _model = 'Model03'; WebPageSpeed =141; UrchinTrack();和之間)添加:
即可實現對ASCIIMathML.js的引用。其運行過程為:
(1)創建AsciiMathML對象以及名字空間:
?>
(2)在文檔的onload事件中完成ASCIIMathML的初始化工作;
(3)遍歷DOM對象樹,查找公式表義的字符串,創建對應的math對象;
(4)由動態鏈接庫形式的網頁插件MathPlayer.DLL完成math標簽對象的頁面公式顯示。
4 結語
以文本串作公式源,在客戶端解析、顯示,較之圖片,易編、省開銷、能重復利用,還可實現公式的檢索[3],甚至語音播報[4]。該文對AsciiMathML.js腳本(以v2.01為范本)在廣泛使用的IE(6.0及以上)平臺上實現的表義到表現的轉化功能進行分析,以期在此基礎上的進一步開發利用。
參考文獻
[1] http:///en/products/mathplayer/
[2] http://chapman.edu/~jipsen/mathml/ASCIIMathML.js
篇3
關鍵詞:招貼設計;文字;符號
中圖分類號:J524 文獻標識碼:A 文章編號:1005-5312(2013)14-0028-02
日本現代著名設計師五十嵐威暢說過,“26個羅馬字母本身沒有任何意義,但他們組合起來卻能表示一切,正因其單純和幾何的形體,從這些基本圖形就能創造出許多變化”。文字承擔著傳遞信息的主要任務,也是設計師創作手法上的表現,表達更多的審美情趣及美感。
一、招貼中文字符號的涵義
文字是記錄語言的符號和工具。從最早的結繩記事到現代的文字、圖形記事等,都是文明的進步。文字都是以符號作為信息的載體傳達寓意。隨著時代的進步,從古代的“象形文字”到現在我們所使用的文字,實際上是符號化的過程,經過加工并承載著一定的設計語義,就形成了當代招貼中的文字符號效果。符號作為非語言的信息傳遞方式,在招貼文字設計中更是體現的淋漓盡致。
符號學家索緒爾說:“語言符號連接的不是事物和名稱,而是概念和音響形象①”。并用能指與所指分別代替“概念和音響形象”的二元符號。另一位符號學家皮爾斯認為 “一個符號,或者說象征,是某人用來從某一方面或關系上代表某物的某種東西②”。在他看來,符號是能指(代表事物的符號)、所指對象(被符號指涉的對象)和符號意義(對符號的闡釋)的三元結構。索緒爾的二元符號學立足于語言符號上,皮爾斯的三元符號學著眼于整個世界,相對來說更具體、廣泛。
文字是用視覺形象來表達思想的符號,是一種美的形象。文字設計是為增強視覺傳達效果,提高作品的訴求力,賦予作品版面審美價值的一種重要構成設計。招貼中的文字設計是對文字造型進行精心安排,運用視覺形式的法則,把平面設計中的基本元素和應用手段看成符號,通過對這些基本元素的加工與整合,使之在視覺上有審美感受,實現傳情達意的目的與視覺沖擊力。
二、文字符號在招貼設計中的表現
人是通過符號來思維的,符號是思維的主體。招貼設計通過文字、圖形和色彩向受眾傳遞著信息。通過視覺進而延續到受眾心理活動的思維過程,而這種延續正是依賴于作為思維主體的符號。將文字的“形”與招貼的“寓意”結合,打破常規,形成一種“情理之中,意料之外”的視覺化效果。這也正式符號學上的能指與所指的表現。
我國著名平面大師靳埭強先生在《漢字》系列山水風云海報(如圖1)把古今兼容,承傳創新,塑造獨特個性的意念融入到招貼的文字設計中。以書法的方式畫出造型的輪廓,表現畫面的意境,這是對文字形態上的創造;中國的“文房四寶”即筆、墨、紙、硯四宗器物之符號語言,分別融合在這四副“字畫”中,達到了文字與工具符號的完美結合,充分體現出書法和傳統思想的完美結合,從中還散發著化物為意的氣息,給人遐想“筆架山”、“靜止(紙)水”、“沿(硯,意沿海臺風)”、“墨色云”,也體現著文化與自然的相互聯系,影響著我們現代人。
字體是視覺傳達設計美感四大表現元素之一,對文字作適當的變形,每一處的變形又是有道理和依據的,能夠讓人看懂是什么字,又能傳達作者的創意?!翱吹枚迸c“看不懂”是介于符號學上的所指與能指的關系,受眾根據作者的創意結合自己的理解領會出其中的意義。如圖2《聲、色、藝》圖形文字設計,將傳統中國戲曲元素與書法文字的組合,“聲”是發出的聲音,是物體振動時所產生的能引起聽覺的波,“鳥”是能發聲的一種動物;“色”由物體發射、反射的光通過視覺而產生的印象,中國戲曲中的“蝴蝶”顏色的豐富多彩;“藝”古代指六藝以及術數方技等各種技能,戲曲中的“帽子”也是中國戲曲藝術的代表之一;分別提取書法的文字形態和中國戲曲的寓意等基本元素,重新構成全新意義上的視覺化符號,具有它的所指和能指的意義。它們代表中國傳統文化,有著悠久的歷史。各自具有的結構、韻律、形態、寓意通過不同的文字、圖形結合能夠表現出獨特的符號美。
日本的平面大師福田繁雄以《F》(如圖3)為主的招貼,主畫面為福田繁雄名字的首字母“F”為基本型,保持不變,進行圖形元素的創意置換?!癋”是第一元素文字形態,延用第二元素圖形中的人、動物等視覺化元素進行空間異質同構的設計。使字母的“F”不僅表示字面的意義,通過對“F”形態上的不同置換,與符號化形象的結合,置換出新的元素并完成再創造,表達出新的本質涵義,通過耐人尋味。
三、招貼中文字符號的解構
招貼設計是設計師傳遞自己思想和信息的形式,設計師的目的是要通過某種特殊、特定的視覺符號傳遞給受眾,而受眾對招貼設計中符號的理解受到自身經驗和知識構成的限制,也就是符號作為信息的載體,接發著需有著對知識的共同理解能力。在招貼文字設計過程中,又不能盲目地去追尋創新而不注重本身的制約,所以,在表現手法上更多的是用受眾容易接受的設計符號作為元素,這樣不僅能使受眾對其所愛,還能深刻的傳遞設計符號的理念。文字是招貼中的重要組成元素,有著不可替代的作用。我們應該從“形”、“意”兩方面去理解其中的含義,使招貼傳遞出設計者所要傳達的“神”。
篇4
1. 系統變量
系統變量是Authorware自身所提供的一套變量,它們主要用來跟蹤各設計按鈕中相關信息或系統信息等多方面的信息。
每一個變量都有一個唯一的名稱。系統變量的名稱是以大寫字母開頭,有一個或幾個單詞組成,單詞之間沒有空格。例如AltDown等。有些變量后面可以跟一個“@”字符再加上一個設計按鈕的標題名,這種變量稱為引用變量。利用引用變量讀者可以查找文件中任意一個設計按鈕中的相關信息。
2. 自定義變量
如果用戶的需求超出了Authorware所提供的系統變量的功能,用戶可以定義一個變量,這種變量我們稱之為自定義變量。
自定義變量是由用戶自己定義的,在程序的設計中,要求變量名的唯一性,所以讀者在定義一個新的變量時,新的變量名必須是一個除了系統變量名和已存在的自定義變量名外的新的名稱。自定義變量的使用方法同系統變量,能使用系統變量的地方也可以使用自定義變量。自定義變量的初始值是由用戶賦給的。
變量的賦值有以下兩種方法:
(1) 定義新的自定義變量時在【Variables】對話框中給變量賦值。
(2) 在【運算】設計按鈕對話框中使用賦值符號“:=”給變量賦初值。格式為:
“變量名”:=“初始值”
其中“:=”稱為賦值符號。在Authorware的程序設計中,讀者可以直接使用“變量名”=“初始值”來賦值,Authorware會自動檢測賦值過程,并自動為賦值符號添加一個“:”。例如:City:=“北京”,Pause:=TRUE等。
根據變量的存儲類型,變量可以劃分為三種。
在其它的編程語言中,例如C 、C++、FORTRAN等語言中,變量的定義和使用是非常復雜的。例如:在FORTRAN語言中,變量的類型有:
全局變量
局部變量
僅就一個簡單的數值型變量,FORTRAN又有如下類型:
整型
實型
單精度
雙精度
長整型
各種各樣的變量類型使用戶眼花繚亂,學習起來非常困難的。之所以將變量定義得如此復雜,其主要目的就是為了節省寶貴的內存資源。
在Authorware中,我們沒有必要為定義變量的各種類型煞費苦心,Authorware沒有區分變量的整型和實型,是全局變量還是局部變量,以數值型變量來說,Authorware只有一種單一的類型:數值型,Authorwar將所有的變量都視為全局變量。
(1) 數值型變量:數值型變量用來存儲具體的數值。數值的類型是任意的數值,可以是整型(例如50、-30等)、實型(例如3.4456、-5.654)。
在Authorware中,數值型變量的存儲范圍是
(2) 字符型變量:字符型變量用來存儲字符串。字符串是由一個或多個字符組成的。例如:“This is $100”、“The number is 3444”和“*as?”等都是字符串。
請讀者注意,在我們把字符串賦值給一個字符型變量的時候,必須為字符串加上雙引號。在Authorware中,一個字符型變量可以存儲的字符數長達3000個。
(3) 邏輯變量:邏輯變量存儲兩種狀態:TRUE 或者FALSE。
邏輯變量最典型的用途是作為一個判斷條件,激活或不激活某一選項。
函數的類型
函數主要用來執行一種特殊的操作。 Authorware的函數分為以下兩種類型:
(1) 系統函數:系統函數是Authorware自身提供的一系列函數。這些函數對于圖形對象、正文對象、設計按鈕和文件等進行直接操作。
注意:
對于函數來說,名稱必須唯一,而且每一個函數必須遵循某種使用規則,這種規則稱之為語法。一個函數一般包含一至幾個參數,函數的參數是Authorware為完成某一特定任務所必須的信息。例如函數Random(min, max, units),參數為min(最小值)、max(最大值)和units(小數點后位數)。系統函數均以大寫字母打頭,由一個或多個單詞組成,單詞之間沒有空格。
(2) 自定義函數:對于Authorware系統無法完成的特殊任務,讀者可以自己定義函數來完成這些任務,具體的內容參見后面的創建自定義函數。
系統變量的分類和使用
Authorware所提供的系統變量可以分為以下九大類:
Decision:判定判斷變量。
File:文件管理變量。
Framework:框架管理變量。
General:一般用途變量。
Graphic:圖形控制變量。
Icons:設計按鈕管理變量。
Interaction:交互管理變量。
Time:時間管理變量。
Video:視頻管理變量。
在系統變量的九大類中,各自還有處理這一類對象的大量變量,下面我們將通過具體實例來學習系統變量的使用方法。
1. 在應用程序中使用系統變量:
在應用程序中使用系統變量,具體的操作步驟如下:
(1) 選擇變量的插入位置:
圖6-5 在【運算】對話框中插入系統變量
① 如果在【運算】設計按鈕對話框中的某個表達式和某一函數中使用變量,則首先將光標移動到要插入變量的位置。例如我們要將GetWord()函數中的String參數用HotTextClicked系統變量代替,首先在圖6-5中選擇String,然后使用鍵盤來輸入該系統變量的名稱。
② 如果要在一個設計按鈕的對話框中使用系統變量,則首先需將光標移動到要插入變量的地方。例如我們在一個熱區響應類型的【Response】對話框中的【Active IF True:】正文輸入框中使用AltDown系統變量,則首先需將光標移動到正文輸入框中要插入該系統變量的地方。如圖6-6所示。
圖6-6 在對話框中插入系統變量的位置
(2) 使用【Window】菜單中的“Variables”命令,或按快捷鍵Ctrl+Shift+V,打開如圖6-7所示的【Variables】變量對話框。
圖6-7 【Variables】變量對話框
(3) 在圖6-7所示對話框中的變量類型【Category】下拉列表中選擇所使用的變量類型,會在變量名稱顯示框中顯示所有屬于該類型的變量的名稱。如果我們不知道所使用變量的所屬類型,可以選擇該下拉列表中的【All】選項,這樣在系統變量名稱顯示框中將按照字母的順序顯示Authorware所有系統變量的名稱。
(4) 在圖6-7所示變量名稱列表中單擊要使用的系統變量名。
(5) 單擊對話框中的【Paste】命令按鈕,便將該變量使用時的名稱剪貼到前面所指定的位置上。
(6) 【Variables】變量對話框是一個獨立的浮動窗口,如果還要在其它地方使用系統變量,不需要關閉變量對話框,只需首先選擇要插入系統變量的位置,然后重復上述操作即可。
(7) 當將所有需要插入的變量完成后,使用【Done】命令按鈕關閉對話框。
注意:
如果讀者對系統變量的名稱和使用方法非常熟悉,則不必使用【Variables】變量對話框來剪貼插入變量,讀者可以直接在圖6-6所示的正文輸入框中直接輸入變量的名稱。
2. 引用變量和查詢指定設計按鈕中變量的值
在Authorware中,變量的值是隨著程序的執行隨時改變的,因此,在程序的不同地方,變量的值有可能不同。在Authorware中,有很多變量允許用戶在一個程序的不同的地方查閱某個設計按鈕中該變量的值。我們稱這樣的變量為引用變量。
注意:
引用變量的格式為:“變量名”@“設計按鈕標題”。
下面,讓我們用一個簡單的例子來說明引用變量的使用方法。
該實例的內容是:使用EntryText變量查閱最終用戶正文輸入響應中輸入的正文內容,然后在程序的執行過程中將用戶輸入的內容在適當的位置重新顯示出來。
程序的邏輯結構如圖6-8所示。
圖6-8程序的邏輯結構
在程序中我們使用了【交互作用】設計按鈕中的【正文輸入】響應分支結構來讀取用戶輸入的正文,將用戶輸入的內容存儲在系統變量EntryText中,在標題為“回顯正文”的【顯示】設計按鈕中創建一個正文對象,在正文對象中插入系統變量EntryText來顯示用戶輸入的信息,插入的形式為“用戶輸入的內容為:{EntryText@“輸入”}”,如圖6-8所示。
3. 自定義變量的定義和編輯
雖然Authorware提供了跟蹤所能想象的任何事件的變量,但在很多時候,讀者還是希望創建自己的變量來跟蹤某一特定的內容。例如:在創建要求用戶輸入姓名、學號的一個交互性對話時,用戶可以使用Authorware提供的Username來跟蹤用戶姓名,但你還要創建一個變量來跟蹤用戶的學號。
在Authorware中,有兩種自定義變量的方法:
方法一:使用新建變量對話框來自定義變量。
如果讀者在運算對話框、展示窗口或對話框的一個區域中輸入了系統不認識的變量,則系統將打開如圖6-9所示的新建變量對話框。
當新建變量對話框打開后,用戶需要在對話框中輸入以下內容:
(1)【Name】:變量名稱正文輸入框:該區域顯示的是Autorware不認識的變量的名字,在該正文輸入框中,我們要輸入待定義變量的一個具有描述性的名字。例如UserID,該名字能表達實際的含義,意思是用戶的ID號。而象“a”或“x1”等都不是好的變量命名。
(2)【Initial Value】:初始值正文輸入框:該正文輸入框是可選的。使用該正文輸入框可以為用戶所定義的變量設置初始值。程序每次開始運行該模塊時都將該正文輸入框中的值如同給Authorware系統變量賦值一樣賦給用戶變量。
(3)【Dispriction】:描述性文本區域:該輸入框也是可選的。
由于該區域是可選的,所以經常被編程人員所忽略。事實上,該區域在程序的設計過程中是非常重要的。
在程序設計的初期,創建這些變量的程序設計者可能非常熟悉各變量的含義和使用方法,但是設計者會發現,程序開發小組中的其它開發人員,甚至是創建變量的開發者自己,在創建變量的幾個月后都不再明白變量的含義和最初創建該變量的目的。所以,為了程序開發有序性和便于今后理解和使用自定義變量,請讀者在該區域中盡可能地加以描述。
注意:
關于自定義變量的數目,在Authorware中是沒有限制的。但是,在程序的開發過程中,筆者建議讀者盡可能地限制自定義變量的數目。變量越少,應用程序越容易維護。
方法二:使用【Variables】變量對話框來自定義變量。
在運算對話框、展示窗口或對話框的一個區域中輸入系統不認識的變量之前,我們可以使用【Variables】變量對話框(如圖6-10)來預先定義一個自定義變量。
圖6-10【Variables】變量對話框
具體的步驟如下:
(1) 在【Catagory】變量類型列表中選擇圖示的文件名,該文件名表示所要定義的變量屬于所選擇的文件。
(2) 單擊【Variables】變量對話框中的【New】命令按鈕,彈出新建變量對話框,如圖6-11所示。
圖6-11 新建變量對話框
(3) 依照方法一,在新建變量對話框中輸入如圖6-11所示的內容。
(4) 單擊【OK】命令按鈕結束新變量的設置,結果如圖6-12所示。
(5) 讀者可以使用圖6-12中相應的命令按鈕來修改所設定的變量。
①【Rename】命令按鈕:單擊該命令按鈕,彈出圖6-13所示的【Rename Variable】對話框,在該對話框中來修改變量的名稱。
②【Delete】:刪除命令按鈕:
單擊該命令按鈕,刪除在變量名列表中選擇的自定義變量。
(6) 直接在該對話框中設置變量的初始值和觀察變量的當前值。
(7) 單擊該對話框中的【Done】命令按鈕結束對新變量的定義。則新定義的變量就可以在Authorware的程序中使用了。
注意:
在【Variables】變量對話框中,Authorware所提供的系統變量在該對話框中是不能修改和刪除的。只要用戶自定義的變量才可以使用修改和刪除命令。
技巧:
【Variables】變量對話框在調試有大量變量的應用程序時是非常有幫助的。我們可以通過使用該對話框來監測變量值的變化。
4. 變量的賦值
篇5
關鍵字:生僻字;字符集;信息處理
漢字的信息處理經過多年的摸索,沖破了以前漢字不能進入計算機的迷信,取得了可喜的成績,但離能完全滿足實際使用的需要還有很長一段距離。
我們先回顧一下計算機中的字庫,然后討論生僻字的信息處理方法。
一、漢字庫發展簡介
漢字庫通俗地說就是計算機軟件系統中的漢字倉庫,依據不同的標準,字庫中漢字的數量是不同的,以前的主要標準有:
1、GB 2312 漢字編碼字符集
從1975年開始,我國為了研究漢字的使用頻度,進行了大規模的字頻統計工作,內容包括工業、農業、軍事、科技、政治、經濟、文學、藝術、教育、體育、醫藥衛生、天文地理、自然、化學、文字改革、考古等多方面的出版物,在數以億計的浩瀚文獻資料中,統計出實際使用的不同的漢字數為6335個,而其中有3000多個漢字的累計使用頻度達到了99.9%,而另外的3000多個累計頻度不到0.1%,說明了常用漢字與次常用漢字的數量不足7000個,這就為國家制定漢字庫標準提供了依據。1980年頒布了《信息交換用漢字編碼字符集—基本集》的國標交換碼,國家標準號為:GB2312-80,選入了6763個漢字,分為兩級,一級字庫中有3755個,是常用漢字,二級字庫中有3008個,是次常用漢字;還選入了682個字符,包含有數字、一般符號、拉丁字母、日本假名、希臘字母、俄文字母、拼音符號、注音字母等。以前我國大陸的各種中文DOS版本、Windows3.1 /3.2版本,裝入的字庫都是國標一二級字庫。遇到“镕、啰、瞭、袆、祎、曌、赟、贇、鱻、驫、犇……”等漢字,既無法輸入,又不能打印。
后來國家技術監督局又頒布了一個與之相對應的繁體字集,全稱《信息交換用漢字編碼字符集輔助集》,標準號為GB/T12345-90。
2、臺灣 BIG5 字庫
BIG-5碼是通行于臺灣、香港地區的一個繁體字編碼方案,俗稱“大五碼”。地區標準號為:CNS11643,這就是人們講的BIG5碼。
BIG-5碼收錄漢字13053個,分為常用字和次常用字兩部分,各部分中的漢字按筆劃/部首排列。其中常用字5401個,包括臺灣教育管理部門頒布的《常用漢字標準字體表》中的全部漢字4808個,臺灣中小學教科書常用字587個,異體字6個;次常用字7652個,包括臺灣教育管理部門頒布的《次常用漢字標準字體表》的全部漢字6341個,《罕用漢字標準字體表》中使用頻率較高的字1311個。
后來為了協助解決眾多使用BIG5碼單位于進行公文電子傳遞時遇到自造字無法轉換CNS的問題,實行了“BIG5碼字集擴編計劃”,1986年7月擴編完成,這就是所謂的“BIG5+碼”。
BIG5+碼系以CNS為藍本,共增編標準字集4760個字符與推薦字集3250個字符;其標準字集即納編CNS第3字面字集內之4145個,第4個字面字集內之219個字,均為一般文書常用之中文字,總支持文字量達141376個
3、大字符集字庫(又叫GBK字庫)
國際標準化組織為了將世界各民族的文字進行統一編碼,制定了UCS標準。根據這一標準,中、日、韓三國共同制定了《CJK統一漢字編碼字符集》,其國際標準號為:ISO/IEC10646,國家標準號為:GB13000-90,該漢字編碼字符集就是通常人們所說的大字符集,它編入了20902個漢字,收集了大陸一二級字庫中的簡體字,臺灣《通用漢字標準交換碼》中的繁體字,58個香港特別用字和92個延邊地區朝鮮族“吏讀”字,甚至涵蓋了日文與韓文中的通用漢字,滿足了方方面面的需要。Windows95/98/NT/2000中都裝入了大字符集漢字庫,人們一般稱它為GBK(“國家標準擴展”的拼音縮寫)字庫。
4、新標準漢字庫
2000年3月,國家信息產業部和質量技術監督局在北京聯合了《信息技術和信息交換用漢字編碼字符集、基本集的擴充》,國家標準號為:GB18030-2000,收錄了27000多個漢字,還收錄了藏、蒙、維等主要少數民族的文字,以期一舉解決郵政、戶政、金融、地理信息系統等生僻漢字與主要少數民族語言的輸入,該標準于2000年12月31日強制執行。 GB 18030-2000 作為 GBK for Unicode 3.0 的更新而誕生,它帶有包含所有Unicode 的擴展,完全向下兼容 GB 2312-1980 和 GBK。
二、對于漢字庫設計的想法
字集不是越大越好,因為現存于大型字典辭書的字有一部分是歷史用字,還有大量的異體字。根據使用的需要和研究的情況,對漢字的信息處理可以分為幾個層次
1、日常生活用字:(可有一個人名、地名輔助集和錯字集)
日常生活用字就是常用字,這個數字可能就在3000字左右,再加上一些次常用字,可能也就在6000字左右,當然,其中哪些是常用字,哪些是次常用字,具體的字可能要隨著時代不同而發生變化。日常生活用字要求有規范性,現在進行的“規范漢字表”課題研究可能有助于此字集的確定。
人名和地名用字是一個比較特殊的問題,國家語言文字工作委員會正在進行“人名、地名規范”的研究,如果此研究成果面世,則可能有助于解決現代人的人名、地名用字問題。
此集中最好還應該有一個錯字集,在早期識字教育和對外漢語教學中,經常要使用到一些錯別字,別字好打,缺筆少劃的錯字沒有辦法處理,所以應特置一個錯字集,有利于錯別字教學的信息化與錯別字的集中糾正。
2、一般古籍整理用字:(應該有一個異體字輔助集)
古籍用字,數量比現代生活用字多。因為歷代沉積下來的異體字、死字比較多。關于這個問題,首先應該進行異體字的整理,異體字整理完成后,正體字就可以確定一個數量。為了保持古籍版本原樣,古籍整理工作者和語言文字研究者也要用到異體字,所以附錄一個異體字集。
還有一個問題就是方言字,很多方言字來源于古代的字典辭書、地方韻書和方言詞典,少部分來源于民間文藝作品。首先方言字有一個規范的問題,那些有本字又意義比較明確的,應該首先選用本字。如本字不明,可沿用俗字。
3、古文字用字:(也有一個異體字輔助集)
關于古文字,一般定義為小篆以前的文字為古文字,其中有很多字還不可識,這種情況,就首先要區分出可識字(與小篆或楷書有對應字)與不可識字,然后進行異體字的整理。并且要能為每個不可識字設計可以調用的編碼,以利于檢索。
漢字庫的設計,針對不同的用戶與使用目的,分級分層次是很必要的。各級之中首先要全,同時要考慮各級之間正體字與異體字、繁體與簡體、古文字與今字的正確對應等。
此外,各種常用圖符也可考慮收錄到各級字庫中,如傳世古籍中出現的圈點符號、古文字中的有句讀作用的符號。少數民族和外域的漢字型變體字,也可考慮單置一類,以有利于文字的比較研究。
轉貼于 三、解決方案
以下所使用的操作系統,沒有特別指出的為Windows98,字處理軟件則為Word2000。其它則專門指出。
(一)利用GBK漢字集解決生僻字的輸入方法。
微軟從Windows 95(簡體中文版)視窗操作系統起,都采用了GBK字庫,該字庫收字20902個,基本能滿足日常生活用字(生僻人名、地名字除外)。要利用該字庫,通??刹捎孟铝袔追N方法。
1.改用GBK輸入法
Windows 95版本及以后版本提供了 GBK 內碼、GBK 全拼、GBK 雙拼、GBK 表形碼和 GBK 鄭碼5種 GBK 輸入法。但這些輸入法不是安裝的默認選項,需要從“控置面板”中打開“輸入法”對話框來添加。Windows 98 默認安裝全拼輸入法則可以選擇輸入一般漢字和 GBK 漢字(使用該輸入法的屬性設置)。其它同樣需要安裝。
這些 GBK 輸入法中只有全拼比較常用,而且,這些輸入法所輸入的漢字,包括了 GBK 繁體和 GBK 簡體,數量非常大,所以造成兩方面的不便:一是重碼率高,選字非常麻煩;二是繁體簡體同時出現,有些字不容易分辨繁簡,同時如果不知道字的讀音,也很難選擇拼音輸入法。
現在已有軟件研制商研制出能輸入GBK字庫的五筆字形輸入法,如智能陳橋,對于熟悉五筆輸入法者,比較便利。
2、用Word插入符號的方法
選“插入”菜單中的“符號”命令,在“字體”下拉列表中選“標準字體”(Word97是“宋體”),在“子集”中選“CJK統一漢字”(Word97是“部首及難檢字”)。一般可在列表中找到所需的漢字。雖然該字庫大致是按部首和筆畫進行編排的,但查找起來還是相當麻煩。以前有萬學仁先生編有《通用字符集部首表及區位碼(16進制)》[1],有利于查找,如果沒有該部首表,還有一種方法可以采用,先輸入一個與所要輸入的生僻字相同偏旁的漢字,并選中該漢字,然后用鼠標單擊“插入”菜單中的“符號”項,此時會彈出“符號”對話框,再用左右方向箭進行逐個查找和挑選,就會很快找到該生僻字的。如果是一個獨體字,則可以輸入一個筆畫相同的的獨體字(也不作偏旁)。很快會在其附近找到該字。
(二)GBK字集以外生僻字的輸入
1、使用Windows自帶的“造字程序”
該程序操作簡單,使用方便,既可以用兩個字重新拆分組合成一個新字;也可以選一個相近的字加以修改而造一個新字;還可以直接在編輯框中畫出您所需要的字,比較便利的是前兩種方法,其步驟如下。
(l)取兩個字中有用的部分,重新組合成一個新字。以“腘”字為例(為便于排版,沒有選用GBK以外的字作為例字,下同),單擊“開始”按鈕,選“程序”、“附件”、“造字程序”,出現“造字程序”窗口。在彈出的“選定代碼”窗口中確定所造的字的代碼位置,比如AAA1后按“確定”按鈕(如沒有出現,則選“編輯”中的“選定代碼”命令),此時在“造字”窗中出現“編輯”工作區。再選“編輯”菜單中的“調用”命令(在Windows2000、XP中則為“復制字符”命令),單擊“字體”按鈕,選擇字體后,在“形狀”框中輸入參考字“臘”,按“確定”按鈕。在“編輯”框中出現“臘”字。再選“窗口”中的“引用”命令(在Windows2000、XP中則為“參照”命令),一樣選定字體,輸入參考字“摑”,在“造字”窗中出現帶有“摑”字的引用框。用“造字”窗左邊的圈選工具圈選“編輯”框中的“昔”,按Del鍵。圈選“引用(參照)”框中的“國”,將它拖到編輯框中合適的位置,然后關閉“引用”框。再選“編輯”菜單中的“保存字符”命令,在對話框中按“確定”按鈕。
此時該字已經建立,如文章中需要用到“腘”字只要將輸入法切換至區位輸入法,鍵入AAA1,即可出現“腘”字。
如果要在以后能以平時的輸入方法輸入該字,那還要補上下一步操作;選“編輯”中的“輸入法鏈接”命令,如為第一次輸入,將彈出搜索對話框,在文件名輸人框中以英數方式輸入你常用的輸入法,單擊“打開”按鈕,彈出是否要創建該文件的詢問,單擊“是”。如有多種輸入方法,則依次鍵入不同的輸入法文件名,完成后彈出輸入外碼對話框,輸入該字的外碼(如鏈接了多種輸入法,則有不同輸入法的外碼)。按“注冊”按鈕。但要注意輸入的外碼必須符合該輸入法的規定,計算機不承認你自行定義的外碼。
(2)用相近的字修改。以“臿”字為例:前邊的步驟與前例相同,只是將參考字改為“插”。用上述的方法刪除“插”字的提手旁后圈選“編輯”框中的“臿”,將它向左拖至框的中間,通過調整八個控制點來改變形狀大小至滿意。以后的操作與上例相同。
該法的優點是:不管是否知道該字的讀音,總能通過拆分組合的方法造出來。并且,當正確輸入外碼注冊后,平時還能以習慣的輸入方法輸入該字。缺點在于如果需要將使用了該造字文件的文檔拷貝到其它計算機中,還需要拷貝造字文件。
(3)對于某些類似于圖形的字,可以選用各種工具畫出需要的字形。
2、用Word組字
Word2000的“格式”菜單中有“中文版式/雙行合一”功能,工具欄上有“字符縮放”按鈕,利用它們您可組合一些冷僻字。較之用其他方法要簡便得多,操作方法如下:
(l)對于左右型字體,以“嬿”字為例:輸入“女”字后緊接著輸入“燕”字;選中“女”字,單擊“字符縮放”按鈕,選擇合適的比例(該字可選50%);選中“燕”字,單擊“字符縮放”按鈕,選擇合適的比例(該字可選80%);同時選中“女”與“燕”,選“格式/字體”命令,單擊“字符間距”標簽,在“間距”框中選“緊縮”,再單擊“確定”按鈕即可。
(2)對于上下型字體(以“斊”字為例):鍵入“文耳”兩字,然后選中它,在“格式”工具欄上的“字號”框內選擇合適的字號(通常輸入“四號”字時可選“小五”號,輸入“五號”字時可選“小六”號。但有時差距可能還要大一些);單擊“字符縮放”按鈕,選擇合適的比例(該字可選200%);選“格式/中文版式/雙行合一”命令,按“確定”按鈕。
采用上法輸入冷僻字要使字型漂亮,對于左右型字關鍵在于輸入合適的比例;上下型字則在于合適的比例及“大小”框中的數值,當然字號的大小也是十分重要。但此法對于結構復雜如包圍型、半包圍型、聲(形)占一角型等的字則不適用。采用該法組成的字,還可以作為字符串檢索。
3、如果要經常運用到大量生僻字形,則可以選用已有的自造字字庫進行插入。
現在已經有大型的自造字字庫出現,如由日本《今昔文字鏡》研究所制作的《今昔文字鏡》,包括24個TTF格式的矢量字庫,共包括九萬個漢字。其中收錄日本《ISO10646字符集》漢字兩萬個,《大漢和字典》漢字五萬個,其他四萬個漢字包括:甲骨文、梵文、大陸、臺、港漢字、水文、越南字喃、漢字偏旁和造字部件、日文假名、俄文、拉丁文等各種常用字母和符號。適用于WINDOWS95/98/NT為操作系統的各種文字處理應用軟件。還提供了一個簡單易用的檢索應用軟件。
還有如北師大漢字與中文信息處理研究所研制的《說文小篆輸入法》,能夠輸入所有小篆字形和《說文》所收古文、籀文等字形。
其它還有一些古籍數字化機構與研究人員也造了各種各樣的字庫,只需要安裝到字體中,就可以顯示打印他們所造的字。此種字庫,如能有統一的規范與標準就比較好交流使用。并且最好能有一個檢索和輸入字符的相應軟件才可資重復利用。
4、用字體制作軟件制作自己的字庫。現在已經有比較好用的字體制作軟件,如Font Creator Program,如果能熟練使用,則可以自己量身定做自己的字體,優點在于可以隨時補充修改。缺點在于自造字庫千差萬別,通用性差。
篇6
1引言
當前,由于Linux資源完全公開,使得Linux的發展日益廣泛快速。基于Linux的各種應用已逐漸深入日常生活的方方面面,尤其是在嵌入式領域,由于內核可裁減定制,因此可隨意地根據用戶需求進行整個系統的定制與重構。其中,我們可以通過對各種標準外部設備的驅動進行改造,從而實現用戶對標準設備的特定需求,例如可以通過對鍵盤的模擬來實現操作的自動化,從而可以避免重復的鍵盤操作。
2Linux內核支持的外部調用接口
由于Linux內核作為系統最深層次的核心,因此外部的開發人員并不能直接對內核進行操作。然而在一些應用程序的開發過程中,又不得不使用內核的某些功能,因此就提供了一些外部接口供開發人員直接與底層內核打交道。
2.1中斷
在Linux下,硬件中斷叫做IRQ(InterruptRequests)。有兩種IRQ,短類型和長類型。短IRQ需要很短的時間,在此期間機器的其他部分被鎖定,而且沒有其他中斷被處理。一個長IRQ需要較長的時間,在此期間可能發生其他中斷(但不是發自同一個設備)。如果可能的話,最好把一個中段聲明為長類型。如果CPU接到一個中斷,它就會停止一切工作(除非它正在處理一個更重要的中斷,在這種情況下要等到更重要的中斷處理結束后才會處理這個中斷),把相關的參數存儲到棧里,然后調用中斷處理程序。這意味著在中斷處理程序本身中有些事情是不允許的,因為這時系統處在一個未知狀態。解決這個問題的方法是讓中斷處理程序做需要馬上做的事,通常是從硬件讀取信息或給硬件發送信息,然后把對新信息的處理調度到以后去做。
實現的方法是在接到相關的IRQ(在Intel平臺上有16個IRQ)時調用中斷處理程序。這個函數接到IRQ號碼、函數名、標志、一個/proc/interrupts的名字和傳給中斷處理程序的一個參數。標志中可以包括SA_SHIRQ來表明你希望和其他處理程序共享此IRQ(通常很多設備公用一個IRQ),或者一個SA_INTERRUPT表明這是一個緊急中斷。這個函數僅在此IRQ沒有其他處理程序或需要共享所有處理程序時才會成功運行。
2.2系統調用
系統調用發生在用戶進程,通過一些特殊的函數來請求內核提供服務。這時,用戶進程被掛起,內核驗證用戶請求,嘗試執行并把結果反饋給用戶進程,接著用戶進程重新啟動。一般當前系統的系統調用作為一張表sys_call_table進行定義的,是由指向實現各種系統調用的內核函數的函數指針組成的表。具體參數參見Linux內核源代碼arch/i386/kernel/entry.S文件中:
ENTRY(sys_call_table)
llongSYMBOL_NAME(sys_ni_syscall)
/*0-old"setup()"systemcall*/
llongSYMBOL_NAME(sys_exit)
…
llongSYMBOL_NAME(sys_ni_syscall)
/*streams2*/
llongSYMBOL_NAME(sys_vfork)
/*190*/
2.3鉤子函數
鉤子(HOOK)是Linux系統中非常重要的系統接口,用它可以截獲并處理送給其他應用程序的消息,來完成普通應用程序難以實現的功能。鉤子可以監視系統或進程中的各種事件消息,截獲發往目標的消息并進行處理。這樣就可以在系統中安裝自定義的鉤子,監視系統定事件的發生,完成特定的功能,比如截獲鍵盤、鼠標的輸入,屏幕取詞,日志監視等等。可見,利用鉤子可以實現許多特殊而有用的功能。
3鍵盤工作機理
CPU對外部設備的管理是通過中斷程序進行的,鍵盤也是一種外部設備,因此,CPU對鍵盤的管理也是通過中斷進行的。當你擊打鍵盤的時候,鍵盤控制器會向CPU提出中斷申請,CPU響應此中斷進行處理,這就完成了一次很簡單與人之間通過鍵盤進行的交互。
首先,當輸入一個鍵盤值的時候,鍵盤將會發送相應的scancodes給鍵盤驅動。一個獨立的擊鍵可以產生一個六個scancodes的隊列。鍵盤驅動中的handle_scancode()函數解析scancodes流并通過kdb_translate()函數里的轉換表(translation-table)將擊鍵事件和鍵的釋放事件(keyreleaseevents)轉換成連續的keycode。例如,''''a''''的keycode是30。擊鍵''''a''''的時候便會產生keycode30。釋放a鍵的時候會產生keycode158(128+30)。
然后,這些keycode通過對keymap的查詢被轉換成相應key符號。獲得的字符被送入rawtty隊列—tty_flip_buffer。receive_buf()函數周期性的從tty_flip_buffer中獲得字符,然后把這些字符送入ttyread隊列。
當用戶進程需要得到用戶的輸入的時候,它會在進程的標準輸入(stdin)調用read()函數。sys_read()函數調用定義在相應的tty設備(如/dev/tty0)的file_operations結構中指向tty_read的read()函數來讀取字符并且返回給用戶進程。
4鍵盤模擬的實現
通常情況下,對鍵盤模擬的實現一般是通過寫一個自己的鍵盤中斷句柄來實現,但這種方法容易導致系統崩潰。因此,在這種方法的基礎上可以利用勾子函數來實現。
如附圖所示,這里主要用到的勾子函數包括handle_scancode(),put_queue(),receive_buf(),tty_read()和sys_read()等函數。
附圖鍵盤驅動原理圖
4.1handle_scancode函數
handle_scancode函數是鍵盤驅動程序中的一個入口函數(參見文件/usr/src/linux/drives/char/keyboard.c):
voidhandle_scancode(unsignedcharscancode,intdown);
這里通過替換原始的handle_scancode()函數來實現紀錄所有的scancode。即將原始的值保存,把新的值注冊進去,從而實現所需要的功能,最后再調用回到原始值的情況下。當此新的功能函數完成后,我們就可以記錄下鍵盤上的正確的擊鍵行為了(其中可以包括一些特殊的key,如ctrl,alt,shift,printscreen等等)。
4.2put_queue函數
handle_scancode()函數會調用put_queue函數,用來將字符放入tty_queue。
put_queue函數在內核中定義如下:
voidput_queue(intch)
{
wake_up(&keypress_wait)
if(tty){
tty_insert_flip_char(tty,ch,0);
con_schedule_flip(tty);}}
4.3receive_buf函數
底層tty驅動調用receive_buf()這個函數用來發送硬件設備接收處理的字符。參見/usr/src/linux/drivers/char/n_tty.c:
staticvoidn_tty_receive_buf(structtty_struct*tty,const
unsignedchar*cp,char*fp,intcount)
參數cp是一個指向設備接收的輸入字符的buffer的指針。參數fp是一個指向一個標記字節指針的指針。在具體的實現中,先保存原始的ttyreceive_buf()函數,然后重置ldisc.receive_buf到自定義的new_receive_buf()函數來記錄用戶的輸入。
例如:要記錄在終端tty1設備上的輸入。
intfd=open("/dev/tty1",O_RDONLY,0);
structfile*file=fget(fd);
structtty_struct*tty=file->private_data;
//保存原始的receive_buf()函數
old_receive_buf=tty->ldisc.receive_buf;
//替換成新的new_receive_buf函數
tty->ldisc.receive_buf=new_receive_buf;
//新的new_receive_buf函數
voidnew_receive_buf(structtty_struct*tty,constunsignedchar*cp,char*fp,intcount)
{
logging(tty,cp,count);
//紀錄用戶擊鍵
/*調用回原來的receive_buf*/
(*old_receive_buf)(tty,cp,fp,count);
}
4.4tty_read函數
當一個進程需要通過sys_read()函數來讀取一個tty終端的輸入字符時,tty_read函數就會被調用。參見文件/usr/src/linux/drives/char/tty_io.c:
staticssize_ttty_read(structfile*file,char*buf,size_tcount,
loff_t*ppos)
篇7
關鍵詞:服務器;安全保護
隨著信息技術的飛速發展,網站作為宣傳、教學、交互和辦公自動化等活動不可或缺的平臺已經越來越得到重視了。然而訪問網站的群體中有個體會有意無意間攻擊網站服務器的主體。各類網站服務器面臨著越來越嚴峻的安全威脅,怎樣才能更好地“加固”我們的服務器成為了每個網站安全維護人員所面臨的艱巨任務。
Web服務器的安全是web服務及應用的安全緊密有機結合的整體,通常工作分為兩部分。
一、 服務器的安全措施
最簡單的就是,提高服務器的安全意識,養成比較好的日常計算機操作習慣。服務器作為計算機廣泛應用的重要部分,對計算機簡單的日常維護也是很必需的。對于個人,比如說及時檢查系統漏洞打好系統補丁、升級殺毒軟件更新病毒數據庫、定時查殺電腦內存等基本工作,并避免移動存儲設備與網站服務器直接相連。對于網站來說,對網站及重要的數據庫文件進行定期備份,多個服務器之間也可以相互備份。當一個服務器出現軟件或硬件故障時,另一個服務器可以用來作為臨時的替代。定期分析服務器日志,及時發現服務器軟件和硬件的異常以及攻擊者留下的蛛絲馬跡,以便及時對應。借助一些成熟的日志分析軟件,可以有效的提高分析日志工作的效率。
其次是密碼的更改,服務器操作系統出廠時的安裝一般都是開啟的默認狀態,多是些名字如guest的沒用賬號,更不要用administrator這類windows默認管理賬戶作為管理員賬戶。以防萬一,最好是建立兩個及兩個以上的管理賬戶,并對他們進行嚴格的賬戶權限控制,不是非必要情況,不要將整個服務器予以授權。其次在設計密碼時,也要有一定的復雜性。由于暴力破解密碼的手段和速度越來越快,所以在設計密碼時,最好是字符、字母、特殊符號、數字等組合的十二位以上的字符串,并定期更改密碼防治破解。我們在設計密碼時,為了防止因為定期更換密碼而出現忘記密碼的尷尬情況,可以采用“聯想法”創造出一些有趣又好記的密碼,比如說“5iskyde**”就可以依據“我愛天上的星星”而記住。對于程序系統文件,密碼最好采用md5等算法加密后再存儲于數據庫。對數據庫設置密碼或采用其他工具加密,也可以使得攻擊者在得到數據的情況下,也不能很輕易的就破解使用。
再次,盡量不用服務器瀏覽網頁,尤其是不可信任的網站,而且盡量避免與服務器不相關的軟件,尤其是一些黑客或黑客學習軟件或破解軟件。對于程序系統中的數據庫文件名最好摻雜一些特殊符號,成為較復雜不易猜中的文件名。同時將數據庫文件擴展名改成asp或asa,防止他人下載。
最后,做好服務分屬和保留地址。企業內的服務通常有DNS服務、FTP服務等,對于重要的不同的服務最好是分屬開來,實行單一化管理,避免多項服務對服務器造成影響,增加自身運行壓力。服務器要保留一部分地址只供服務器使用,并將這些IP地址和服務器的MAC地址綁定,因為服務器的地址分為永久不被侵占性和完全不受控制性,這樣就可以避免服務器地址被占用而造成服務中斷。
二、 web的安全
1、 優化ⅡS設置
更改ⅡS日志路徑避免使用默認的缺省路徑,雖然默認的報錯信息給管理人員在檢查和修正網頁錯誤的時候帶來了極大的方便,但是同時也給伺機尋找asp程序漏洞的攻擊者提供了非常重要的信息。就算要使用默認的web站點,也要將ⅡS目錄與系統磁盤分開了再用。在配置應用程序映射時,只保留asp、cgi、php、pl應用擴展名,其他所有不必要的應用程序擴展都刪除。
2、MySQL安全設置,檢查mysq1.user表, 關于shutdown_priv, process_priv, File_priv和reload_priv的權限可能泄露重要的服務器信息,所以盡量取消。對于mysql安全目錄,限制user讀取、列目錄和執行的權力。
3、Serv-U的安全技術
現今Windows操作系統下最流行、使用最方便、功能最齊全、目前國內應用最多的FTP服務器軟件之一就是FTP Serv-U。FTP是虛擬主機的一部分,所以可以通過更改Serv-U FTP服務器的服務帳戶來加強安全級別。Serv-U有一個默認的System啟動的管理用戶,通過一個能訪問本地端口43958的賬號,任何人都可以執行任意內部和外部命令和隨意增刪賬號。解決的辦法可以是設置一個用于啟動Serv—U服務并屬于Guests組的用戶,從而設置Serv-U服務登陸設置、IIS網站和注冊表設置文件夾權限。
篇8
當藝術批評界開始把談論符號學當作一種時髦的時候,可能并沒有充分意識到符號學與語言學的關系。瑞士學者索緒爾(1857-1913年)既是符號學的奠基人,又是現代語言學的創始人,他提出要創建一門研究符號(希臘詞是semeion)的科學:符號學(semiology),并建議把語言學當作這門一般科學的一部分[1]。在索緒爾看來,語言符號是符號中的一種,除了語言符號外,還存在大量的社會符號,如手勢,象征儀式,禮節形式,軍用信號等。在索緒爾之后,符號學家們不僅研究語言符號,而且也對非語言類的社會符號進行了研究,如羅蘭·巴特(1915-1980年)把符號學用于服裝、廣告等對象,為符號學進入藝術設計領域提供了范例和先導。
國內一些理論家提出,可以把符號學引入書法研究。符號學是研究符號的,對于書法來說,最明顯的符號莫過于書法賴以滋生的漢字系統。無論如何演變,書法的基礎終歸都是漢字。相對于其他的符號系統來說,文字符號恐怕是和語言的關系最為貼近的。漢代和清代的文字研究已經發展到較高的水平,東漢許慎編寫的《說文解字》收錄了9353字,加上重文共10516字,十八世紀編撰的《康熙字典》則收錄了47043字[2],可以說,古代的學者就像熟悉后院的花草一樣熟悉每一個字。然而,熟悉字體、字形、字義和字音的每一個演變,并不代表古代人對漢字的起源和發展有一個科學的認識。漢代學者對漢字符號作了不少理論探討,其中最著名的是六書說,也即把漢字的構字法分析為指事,象形,形聲,會意,轉注,假借這六種。但是,不管是對漢字起源的猜測,還是對漢字構造的研究,如果離開了對語言的系統研究,那都還是有尾無首的。例如,要研究漢字的起源,我們必須懂得只有當某種符號用于系統地記錄語言時才可把它稱為文字;又如,要想研究漢字的構造,我們首先得把“作為語言的符號的文字”和“文字本身所使用的符號”這兩個層次明確地區分開來[3]。經過索緒爾等先驅的倡導,這都是現代語言學里的常識了。寫作本文的目的,可以說是在中國書法界引入符號學之后,補充談一點語言學的常識。從這些常識出發,我們或許會對書法的性質和書法的未來形成某種新的認識。
(二)
前面已經說過,索緒爾把語言學看成是符號學的一部分。在這里,我們不妨把研究語言符號的符號學稱之為語言符號學,并把文字學也囊括在它的范圍內。我們的第一個問題是,索緒爾或后來的符號學家所說的符號究竟是指什么?接下來,我們還會問,語言符號的特性是什么?文字符號(尤其是漢字)又有哪些獨特之處?
無論在中文還是在西語中,和“符號”意思相近的詞均不在少數,有人把symbol說成是符號學的對象,有人把sign說成是符號學的對象,在漢語里,“記號”、“符號”或“指號”都是可供選擇的表達。不過在這里,我們沒有必要在詞句上爭來爭去。索緒爾把符號看作是能指(signifiant,signifier,也譯施指)和所指(signifié,signified)的結合,所謂的能指,就是用以表示者,所謂的所指,就是被表示者。拿玫瑰花來說,玫瑰的形象是能指,愛是其所指,兩者加起來,就構成了表達愛情的玫瑰符號。索緒爾把符號看作能指和所指的結合,和一般人對符號的用法是一致的:符號是用一個東西來指另一個東西。陳嘉映先生說,“凡有所表征的,都可以稱為‘符號’”[4],李幼蒸先生說,“一般記號就是‘代表另一物的某物’”[5],這些說法大同小異。
我們把自然物和符號分開來的一個通用標準是:代表他事他物,還是無所代表[6]。桌子就是桌子,我們用它吃飯、寫字、放東西,也可以把它做成各種式樣,但終究不說它代表了別的什么東西;可是在某些特殊情況下,我們也可以把某種樣式的桌子看作是某個文化的代表,這時候的桌子就變成了符號。人們通常不習慣把桌子或石頭稱作符號,卻覺得烏云和大雁可以叫做符號,其原因可能在于,前者通常不被用來意指他事他物,而后者的意指在生活中逐漸被固定下來,烏云壓天是暴風雨的征兆,大雁南歸暗示季節的變換,在文學和電影中,烏云和大雁還可以有其他固定的象征含義。
符號學研究的是符號,根據能指和所指所構成的關系類型,符號學對符號進行分類。在這里,又是索緒爾提出了一個關鍵性的分類準則:任意性原則。語言符號的能指是語音,所指是概念(意義),用哪個聲音來代表哪個概念,這是任意的。所謂任意的,也就是沒有道理可講的,例如,漢語里用“馬”這個聲音來代表馬,英語里卻用horse,不管是“馬”還是“horse”,它們的聲音都不會和它們所指的東西有任何相像之處。相反,玫瑰花,烏云和大雁,它們之所以能有所表征,卻是有一定道理可講的(盡管這道理并不是對所有的文化都有效),具體來說,玫瑰花和熾烈的愛情有相像之處,烏云和大雨有時間上的鄰近,這些能指和所指之間,帶有某種可感的聯系。從根本上來說,人類社會里的任何一個符號都帶有某種程度的約定性或者說任意性,只不過有的約定是人為的、強制的(如紅綠燈,國旗,人工語言),有的約定是天然的、自發的(如北斗星,玫瑰花,自然語言)。語言符號代表了約定性或者說任意性最強的那一端,它的符號性是最強的。紅綠燈和烏云相比,任意性更強,但和語言相比,卻又更弱。一個人若是不知道紅綠燈的含義,至少可以看出是紅燈在亮,還是綠燈在亮;一個人若是不懂阿拉伯語,那就只能聽到一串稀奇古怪的音響。
語言是對世界的一種劃分,不同的語言可以有不同的劃分方式,這是在所指這個層面上講的。語言所使用的“能指”是人的嗓音,這些音響形式只要能滿足聲帶的基本條件而且彼此之間能清楚地區分開來(如,元音a區分于輔音p),就能夠很好地配合“所指”完成任務。交通燈選擇紅、綠、黃這三個容易區別的顏色,也包含著這層道理。不過,紅綠燈的所指(禁止與通行)十分簡單,而語言的所指(概念)卻是高度復雜,且彼此間成系統的。我們常說,語言就是世界,或者說,我們無法超越語言去想象世界,說的就是語言的系統和大全。
每種語言都以特有的、“任意的”方式把世界分成相互聯系的概念和范疇[7]。語言的奧秘完全在所指這個層面上。但是,總得有一個手段把語言的能耐給體現出來,這就是人類的聲音。人類“選擇”聽覺形象而不是視覺形象作為語言的第一載體[8],自有生理學和物理學上的原因,在這里我們只得尊重這個事實。語言的產生遠遠早于文字的產生,至少在兩百多萬年前地球上已出現了語言現象,可考的繪畫活動出現在歐洲和亞洲的冰河期的晚期,距今四萬五千年到一萬二千年左右[9],而文字的產生與發展,卻是與短短五、六千年的文明史同步的。只有牢記這個語言學事實,我們才不至于誤解文字的本性。
(三)
在古代中國,讀書識字是社會地位的一個重要標志。書面語是雅的,口頭語是俗的,對于一個喜歡讀書寫字的中國人來說,索緒爾的話難免有點刺耳――“語言和文字是兩種不同的符號系統,后者唯一的存在理由是在于表現前者”[10]。
對于中國的語言學家來說,文字是用以記錄語言的符號早就是一個常識了??芍钡浇裉鞛橹梗覀冎械挠行┤诉€在說漢語是象形文字或圖畫文字,或變相地在論點中默認這個前提。無論是字母,還是圖畫,只要它們被用以系統地記錄語言,它們就不再保持它們原來的性質。它們變成了語言的第二符號,它們的意義完全是語言賜予的。原則上來說,不管它們本身有意義(象形),還是無意義(字母),只要它們能夠相互區分,而且不過于復雜的話,就可以起到記錄語言的作用。在這里需要特別搞清楚的一點是,即使是古漢字里比較典型的象形字,如日、人、射,也首先是對語音的一種記錄,其次才是對太陽、人和射的圖解和暗示。
如果僅僅想表示天上的那個太陽,我們完全可以用更形象的方式去表達,而不必在圓圈中加個點。反過來說,如果圖畫記事能滿足一切需要的話,我們何必去另造一套文字?在這一點上,裘錫圭先生不愧是大家,他說,“按照一般的想法,最先造出來的字應該是最典型的象形字”,可是,“人們最先需要為它們配備正式的文字的詞,其意義大概都是難于用一般的象形方法表示的,如數詞、虛詞、表示事物屬性的詞,以及其它一些表示抽象意義的詞。此外,有些具體事物也很難用簡單的圖畫表示出來。例如各種外形相近的鳥、獸、魚、草、木等,各有不同的名稱,但是要用簡單的圖畫把它們的細微差別表現出來,往往是不可能的?!盵11]
實際上,遠在漢代,就已經有學者指出漢字不全是象形文字[12]。不過,這些學者并沒有明確區分“作為語言的符號的文字”和“文字本身所使用的符號”(也即“字符”)這兩個層次。象形,形聲,會意,假借等區分都是就后一層次而言的??墒?,即使是在這個層次上,漢字的語義和象形的聯系也是越來越弱的。
在成熟的文字系統中,文字與語言是完全匹配的。試問,一個語言中能夠用象形圖畫加以表現的概念能有多少呢?通過挪用象形圖畫而造就的文字,絕不會超過這個數目。據專家統計,在甲骨文里,會意字占22.33%弱,形聲字占27.27%弱,象形字只占22.53%強[13]。漢字形成完整的文字體系后,新造的象形字越來越少見,那些由圖畫演變而來的字符,要么喪失其形象變為表義或表音的單純記號,要么以形符或義符的身份參與到新字的構成中去。形聲字是漢語造字的主要手法[14],實際上,形聲字里的“形”從本質上是與義符而不是和形符相聯系的。“鳥”是“鶏”的義符,義符既可以帶有形象,也可以不帶任何形象,即使原來帶有形象,也會趨向于消失[15]。圖畫與文字在文字發展的原始階段可以結合,也可以混用,然而文字一旦成熟,勢必會和圖畫分家[16]。
嚴格地來說,在連續的上下文中,我們并不是因為看到一個字長得像太陽而推斷出它的意思,而是因為我們先就知道它有太陽的意思,才覺得它同時也長得像太陽。早在周代的金文那里,如果不特加提示的話,我們基本不可能從馬、魚等字的字形中猜出它們的意思。實際上,即使是在最為象形的文字中,我們也無法完全避免歧義。誰知道族名金文中的“馬”字是一頭驢還是一只什么別的動物呢?再說,最早的圖畫字也不全是象形的,也有由抽象的幾何圖案變來的。具象圖畫、抽象紋樣和文字,完全是三樣不同的東西,它們各有各的宿命。依類象形可能是巫史階層造字的真實動機,可文字一旦交付百姓使用,像與不像就變得完全不重要了,這一點在隸書上體現得再清楚不過。實際上,“如果秦國沒有統一全中國,六國文字的俗體遲早也是會演變成類似隸書的新字體的”[17]。
如上所述,我們既不能說漢字是象形文字,也不能把圖形在漢字的形成過程中的意義看得過于重要。我們甚至也不能說漢字是“表意文字”。裘錫圭先生說,各種文字的字符,大體上可以歸納為三大類[18],即意符(包括形符和義符),音符和記號,跟文字所代表的詞在意義上有聯系的字符是意符,在發音上有聯系的是音符,在發音和意義上都沒有聯系的是記號[19]。拼音文字只使用音符[20],漢字則三類符號都使用,所以漢字應稱之為意符-音符-記號文字[21]。
漢字記錄語音的方式可能與英語不同,但這和它是否象形文字或是否含有形符毫無本質關聯。我們的確可以用圖畫來指物象形,描摹世界,但只要想到語言早在兩百萬年前就已經把綿延的事件之流分節成相互勾連的環節,從而使“世界”成為圖畫般可以描繪的[22],我們就不必為區區幾千年的漢字史里的象形問題而煩惱了。
(四)
從隸書甚至篆書開始的漢字,已很難直接和象形掛上鉤。也許有學問的書法家會為漢字所包含的具象因素而激動,但他們得認識到,這些類似于闌尾的東西不過是早期文字實驗失敗后留下的痕跡。對于那些想當然的書法家來說,他們最好能夠知道,把“舞”字寫成跳舞的美女,和“持牛尾而舞”的原始圖形沒有絲毫的聯系。如果偏好把字寫成畫的話,他們干嘛不直接去畫人體寫生呢?
如上所述,漢字的構造過程中發生過兩次挪用,第一次是把圖像挪用為文字,第二次是把象形字挪用為音符、意符或記號?,F在我們知道,成熟時期的漢字構字法基本上是沒有象形的地位的。實證研究表明,“漢字形成完整的文字體系之后,新增加的字多數是通過加偏旁或改偏旁等途徑從已有的字分化出來的?!盵23]因為要和語言相匹配,漢字最終放棄了圖解世界的企圖。不過,漢字的確不是語音的奴仆。作為一個和拼音文字同樣完美的系統,漢字不僅有著獨特的構字法則,而且有著獨具價值的造型潛質。
漢字寫起來很麻煩,但其偏旁、部件和筆劃有限,筆順也是一定的,漢字符號系統達到的這種有序性令人嘆為觀止,但又難以清晰地加以表述。王羲之的《蘭亭序》確立了行書的典范,這份字帖并沒有收錄足夠多的漢字,但它的臨摹者卻可以推而廣之,把每一個漢字都寫成王氏行書。書法系統的有序性無疑是以漢字系統的高度有序性為基礎的。書法家的字帖和帳房先生的書信,毛筆書法和硬筆書法,繁體字和簡體字,它們之所以能保持某種連續性,不是因為它們是隨心所欲的文字畫,而是因為它們是對自成系統的文字符號的書寫。英語的構詞法無疑也具有某種可理解的有序性,但這和26個字母的寫法沒有直接的聯系。在抄寫和印刷的過程中,字母也能寫出優美的風格,但它們每發生一次整體變化,畢竟只能造成26種視覺差異。
漢字可考的歷史只有三千三百年[24],但這三千三百年的歷史,是同一種語言連續書寫的歷史。從古文字到隸、楷、行、草,無論是從字體,字形,還是從字的風格造型,每一個新的差異,無不建立在與以往微妙的相似中。書法的歷史遠比文字學的歷史要寬容,它不僅容納正確的東西,也容納錯誤的東西。而在以藝術而不是以實用為目的的書寫中,文字有權變得和語言若即若離。漢字在和語言的匹配過程中,發展出了一套高度有序的偏旁、筆劃體系,這套體系即使脫離了漢語,也一樣具有漢字的魅力。日本的書法,的天書,都是這種類型的東西。它們不是因為和漢語言相匹配而成為書法,而是因為和歷史上的漢字具有系統性的相似。把單個的漢字放大,把寫好的字揉成字球,這些舉動貌似背離傳統,實際上恰好是建立在傳統的基礎上的。
當然,在傳統中進行創作和利用傳統來進行創作是全然不同的。明眼人都看得到,老祖宗傳下來的東西,就像野生動物的物種那樣,在一天一天、一小時一小時地離我們而遠去。
(五)
一般的書法理論往往從審美特性這個角度出發來總結書法的成就,本文并不否認這種探索的意義。但是,當我們過多地把目光集中在書法之“美”或書法所激起的“審美體驗”上時,卻往往忽視了書法和寫字之間的樸素聯系。
我們覺得書法是藝術的,而寫字卻是實用的,可是說到頭,書法家不過是無窮無盡的寫字者中的一員。書法家卓然獨立,只是因為他把某個字體寫到了極致,從而使它具有典范的意義。人們常常在“永恒”或“超時空”這個意義上來理解典范,殊不知典范的一個更為素樸的含義卻是“榜樣”。孔子是人格的榜樣,顏體是書法的榜樣。桃李不言,下自成蹊。沒有“群眾”的爭相效仿,哪有高樓可以獨上?
書法家從不空穴來風。在書法家的書法[25]產生之前很久,漢字已經在集體書寫的基礎上形成了自己的形態。無論是無名氏還是書法家,為了書寫漢語和漢字,都不得不首先遵從漢字的規則。漢字是一套高度有序的符號系統,從原則上來說,要想把握一個字的間架結構,就不得不把握所有字的間架結構。一輩子只會畫自己名字的書法家不僅沒有聽說過,而且也是極其可笑的。
符號學美學關心漢字和書法的有序性。承認書法之美依賴于漢字符號系統的有序性,并不會削弱我們對書法藝術家獨創性的評價。在西方傳統美學的影響下,我們把創作者的迷狂狀態看得過于神秘了。許多人覺得,不管是在作者那里,還是在讀者那里,都有一種全然不同于日常經驗的“審美經驗”(aesthetic experience)在起作用。然而,籠而統之用“審美經驗”來說事,非但不能增加藝術性,反而會敗壞具體而微的藝術感覺。相形之下,用“龍跳天門”、“高峰墮石”、“夏云舒卷”來形容書法的古人,反倒要離事情本身更為接近。
我們常常把審美經驗理解為主觀的感受。然而,好的感覺(good sense)從來都是在和事物打得火熱的過程中體現出來的。偉大的書法家不僅善于和筆墨紙硯打交道,而且善于和漢字打交道?,F在我們已經知道,作為書法基本造型“材料”的漢字,既不是象形的圖畫,也不是抽象的圖案,而是一套具有極強抽象性和系統性的符號。漢字對于文字學家來說是一種符號,對于書法家來說,卻是一種質料。書法家并不關心如何在理論上把握文字的符號性,他們關心的是這些符號性的文字如何從感性上得以生動的顯現。就跟玫瑰花不會被它的所指(愛情)耗盡一樣,在以寫字為美的文化生活形式中,文字的能指也不會被它的所指耗盡――人們在讀懂字義的同時,也停留在字的表面,琢磨如何把字寫得更好。
然而,在當今這個時代,漢字越來越成為一種單純為語言服務的記號。數碼化的漢字固然也保留了各式各樣的字體,甚至各式各樣的書法式樣,但是今日之大眾并不打算去臨摹它們,而是更愿意像揀字工人那樣消耗它們。無論是五筆型,還是拼音輸入法,都是依賴某種檢索系統把事先準備好的漢字一個一個揀出來。用筆來書寫漢字,卻沒有這么現成。寫字的人不僅一筆一劃都不能漏過,而且在每一個筆劃上都存在著勝負生死的可能。書法家是精益求精的寫字人,和揀字工人不同,他從不把漢字看作現成的可以消耗的材料,而是看作不確定的、需要反復加以形成的東西。文字是書法家所利用的質料,但是好的書法作品非但“不會使質料消失,倒是才使質料出現”[26]。金匠的任務是使金屬熠熠生輝,畫家的任務是使顏料發光,詩人的任務是使聲音朗朗可聽,書法家的任務又是什么呢?
當電腦鍵盤摧毀了書法賴以生長的廣闊的民間土壤時,漢語和漢字并沒有隨之消亡,但是,書寫漢語的活動在某種意義上已經終結了。一方面,漢字變得越來越像是純粹的記號,另一方面,書法變得越來越像脫離語言的圖像。這是一件事情的兩個方面。
2003年6月21日
注釋:
[1] 索緒爾,《普通語言學教程》,商務印書館1996年,第38頁。
[2] 裘錫圭,《文字學概要》,商務印書館1998年,第30-31頁。
[3] 裘錫圭,《文字學概要》,商務印書館1998年,第10頁。
[4] 陳嘉映,《語言哲學教程》,北京大學出版社2003年,第1章,第7節。
[5] 李幼蒸,《理論符號學導論》,社會科學文獻出版社1999年,第46頁。
[6] 趙元任先生曾說,“符號之所以為符號,并不是從符號的本身上可以看得出來的,是看這事物有所代表沒有,假如某事物是代表他事物的,無論兩者是屬何性質,前者就叫后者的符號,后者就叫前者的對象。所以符號與對象,猶如師生父子等相對的名詞,不是絕對的名詞?!币娳w元任《符號學大綱》(1926年)。
[7] 陳嘉映,《語言哲學教程》,北京大學出版社2003年,第5章,第2節。
[8] 注意,并不是心里先有了一套概念系統,再配上聲音,能指與所指是同步生長起來的,如陳嘉映先生所言,“幼兒牙牙學語,他的聲音一開始沒有意義,后來有了意義,這不是后來把意義附加到了聲音上面,而是聲音生長成為有意義的聲音”。見陳嘉映,《語言哲學教程》,北京大學出版社2003年,第5章,第2節。
[9] 參見朱狄,《藝術的起源》,中國青年出版社1999年。
[10] 索緒爾,《普通語言學教程》,商務印書館1996年,第47頁。
[11] 裘錫圭,《文字學概要》,商務印書館1998年,第2頁。
[12] “倉頡之初作書也,蓋依類象形,故謂之文。其后形聲相益,即謂之字。文者,物象之本;字者,言孳乳而寖多也。著于竹帛謂之書。書者,如也?!币娫S慎《說文解字序》。
[13] 李孝定,《中國文字的原始與演變》,載《漢字的起源與演變論叢》,臺灣聯經出版事業公司1986年,第136頁。
[14] 裘錫圭,《文字學概要》,商務印書館1998年,第32頁。
[15] 雞字的具體演化過程,見裘錫圭《文字學概要》,第151頁。
[16] 我們發展哪套文字來標記語言是任意的,沒有道理可講的,但是一套文字如何演化和改進,卻有很多局部的道理可講。拿漢字來說,形聲字便于記憶,筆劃的平直便于書寫,這都是漢字演進過程中的道理。象形字為何衰微,恐怕也是有道理可講的,只不過講起來會牽扯太多的問題。
[17] 裘錫圭,《文字學概要》,商務印書館1998年,第69頁。
[18] 注意,這三大類都是在“文字本身所使用的符號”這第二個層次上說的,意符(包括形符和義符)的意思是當作意符來構字,音符的意思是當作音符來構字,記號的意思是當作記號來構字。從第一個層次來說,任何一個字符都是一個“任意性”的記號,和它結合在一起的既有語音,也有概念。
[19] 裘錫圭,《文字學概要》,商務印書館1998年,第11頁。
[20] 只要不過于狹隘地理解字符(例如,不把拼音文字的字符理解為單個的字母,而是理解為字母的組合),拼音文字也同樣可以看作是由這三類字符來構詞的(形符除外)。以法語為例,法語沒有字這個層次,只有詞這個層次,與漢語里的構字法相對應的是法語里的構詞法。在法語里,字母的組合用以表音,帶有獨立語義的詞干、詞綴經過組合可以造出新詞,不帶獨立語義、且喪失表音功能的字母組合則可視為裘先生所說的記號。拼音文字和漢字雖然長得很不一樣,但只要建立了合適的平臺,也一樣是可以比較的。
[21] 裘錫圭,《文字學概要》,商務印書館1998年,第18頁。
[22] 參見陳嘉映,《信號、句子、詞》,載《思遠道》,福建教育出版社2000年。
[23] 裘錫圭,《文字學概要》,商務印書館1998年,第32頁。
[24] 裘錫圭,《文字學概要》,商務印書館1998年,第28頁。
篇9
當用戶填寫頁面內容時所提供的全部值,或在瀏覽器地址欄輸入在url后的值,通過form和querystring集合為asp腳本所用。這是在asp代碼中訪問值的一種簡單方法。
1、 訪問asp集合的一般技術
大多數asp集合與在vb中見到的普通集合相差不多。實際上,它們是值的數組,但能通過使用一個文本字符串鍵(對大小不敏感)以及一個整型索引進行訪問。因此,假如客戶端web頁面包含的如下:
firstname:
lastname:
可通過訪問asp的form集合來訪問其控件內的值:
strfirstname = request.form(“firstname”)
strlastname = request.form(“lastname”)
也可使用窗體中控件的整型索引,索引的范圍從在html中第一個定義的控件開始,然后根據定義的順序排序:
strfirstname = request.form(1)
strlastname = request.form(2)
然而,后面的這種以整型為索引的技術不推薦使用,因為一旦有html中的控件發生了變化,或者插入一個新的控件,則asp代碼將得到錯誤的值。進一步而言,對于閱讀代碼的人來講,極容易混淆。
1) 訪問集合的全部值
可以通過引用集合把整個form上的一系列值變成單個的字符變量,且不用提供鍵或索引。
strallformcontent = request.form
假如文本框包含值priscilla和descartes,則request.form語句將返回下列字符:
firstname=priscilla&lastname=descartes
注意,提供的值是以名稱/值對的形式出現的(即控件名稱=控件值),并且每一對名稱/值相互之間是用符號“&”相分隔的。假如打算把窗體中的內容傳遞單獨的,希望得到值的標準格式的可執行應用程序或dll,這個技術是很有用的。然而,一般說來,都是通過以窗體中控件的名稱為文本鍵來訪問集合中的內容。
2) 遍歷一個asp集合
有兩種方式遍歷一個asp集合中的所有成員,方式與普通vb集合的基本相同。每個集合提供一個count屬性,返回的是集合中條目數量??赏ㄟ^使用一個整型索引使用count屬性來遍歷。
for intloop=1 to request.form.count
response.write request.form(intloop) & “
”
next
假如先前的窗體包含priscilla和descartes值的兩個文本框,將得到如下結果:
priscilla
descartes
然而,更好的方法是使用for each...next結構。
for each objitem in request.form
response.write objitem & “=” & request.form(objitem) & “
”
next
這帶來的好處是既可以訪問控件的名稱又可訪問其值。上述代碼將得到如下結果:
firstname = priscilla
lastname = descartes
注意,一些瀏覽器返回到asp的值可能與頁面上顯示的順序不盡相同。
3) 集合成員的多值性
在某些情況下,asp集合中的各個成員可能不止一個值,這種情況發生在html定義中有幾個控件有相同name屬性時。例如:
在form集合中,將為“otherhobby”創建一個條目。然而,它將包括從三個文本框中得到的值。假如在提交時,用戶留下了一個或多個為空,則返回的值為空字符串。假如用戶在第一和第三個文本框分別輸入gardening和mountaineering,第二個文本框為空,在我們的asp代碼中訪問request.form(“otherhobby”),將返回字符串:
gardening, ,mountaineering
為了能夠在這種情況下,訪問單個值,可以用復雜一些的代碼:
for each objitem in request.form
if request.form(objitem).count >1 then ‘more than one value in this item
response.write objitem & “:
”
for intloop = 1 to request.form(objitem).count
response.write “subkey” & intloop & “value = “_
& request.form(objitem) (intloop) & “
”
next
else
response.write objitem & “ = ” & request.form(objitem) & “
”
end if
next
對于前面的包含三個otherhobby控件的窗體實例,這將返回:
otherhobby:
subkey 1 value = gardening
subkey 2 value =
subkey 3 value = mountaineering
然而,由于很少給多個文本框相同的名字,因此這種技術很少用到。
a) html中的單選或選頁按鈕控件
在html中,需要給幾個控件相同的name屬性的情況是單選(或選項)按鈕,例如:
i live in:
america
europe
asia
因為用戶只能選擇多項中的一個(這就是給它們相同的名字的原因),將僅得到一個返回值,瀏覽器只能發送所選擇控件的值。因此,假如這個窗體的用戶已經選擇了“europez”,將得到這個條目,通過遍歷form集得到其值:
country = eu
由于為每個控件提供了不同的value屬性,反映了每個條目所對應的國家或地區的名稱。假如省略了value屬性,瀏覽器將返回的值為“on”,因此將得到:
country = on
這是不經常用到的,因此一般對使用相同名稱的單選控件使用value屬性。
b) html復選框控件
當一個窗體中html源碼包含一個復選框控件時,一般都給定唯一的名稱,例如:
i enjoy:
reading
eating
sleeping
在這種情況下,提交窗體時,假如僅是第一和第三個復選框被選中(加標記),遍歷form集合時,會得到下列值:
reading = on
sleeping = on
然而,假如為每個復選框提供一個值,把這個值發往服務器代替字符串“on”。例如窗體如下:
i enjoy:
_
swimming
_
reading
eating
sleeping
如果除第三個復選框外,全部提交,在request.form集合會產生下列結果:
hobby = hobby025, hobby003, hobby010
假如編寫更復雜一些集合遍歷代碼,如先前所述(單獨顯示每個子鍵),就得到這樣結果:
hobby:
subkey 1 value = hobby025
subkey 2 value = hobby003
subkey 3 value = hobby010
需要注意的是兩種情況,沒有選中的控件根本不返回任何值。在第一種情況的結果里,沒有欺騙性的逗號,第二種情況也沒有空值。這與上述的使用文本框的相當的測試的結果不一樣。使用文本框時,每個文本框都返回一個值,即使是一個空字符串。這是瀏覽器造成這樣的結果。因此在asp代碼中訪問集合時,要注意這個問題。
上述情況一個棘手的負作用是使用復選框時,復選框值的索引與在原始的html中控件的位置沒有任何聯系,在上述的例子中第四個復選框的子鍵數為3,因為當窗體提交時,第二個控件沒有選中。
c) html列表控件
html中的標記用來產生標準的下拉列表框,其值以一種有趣的混合方式表示。下列的窗體創建了包含5個值可供用戶選擇,由于包含了multiple屬性,因此可以通過選擇時按下shift或ctrl鍵,選擇不僅一個的條目。
programming
swimming
reading
eating
sleeping
下圖所示為該頁面,顯示的是選中了三個條目。
這種特殊的情況返回的是在form集合中單個條目,它包含選擇的值(單個的標記中指定的value屬性),用逗號分隔:
hobby = hobby025, hobby003, hobby010
假如使用更加復雜一些的集合遍歷代碼(單獨顯示每個子鍵),將得到:
hobby:
subkey 1 value = hobby025
subkey 2 value = hobby003
subkey 3 value = hobby010
這與上述相同名稱的復選框的情況相同。事實上可以認為一個select列表是一列復選框的列表供選擇(不是選中)相應的條目。
然而,列表框也有指定的值,假如在標記中設置value屬性,將得到的是選擇的選項的文本內容,request.form集將包含這樣一個項目:
hobby = swimming, reading, sleeping
并且,同樣,復雜一些的集合遍歷代碼將返回如下結果:
hobby:
subkey 1 value = swimming
subkey 2 value = reading
subkey 3 value = sleeping
當然,假如單個項目被選擇,且在中提供了value屬性,得到結果包含的僅是:
hobby = hobby025
如果沒有提供value屬性,得到:
hobby = swimming
這允許既可以缺?。礋ovalue)顯示選項文本,也可做相應的改變。后一種情況在某些情況下是極為有用的,如要顯示(一個說明的字符串)和傳遞一個完全不同的內容(如用一個短碼代表一個說明性的字符串)。
d) html提交和圖像控件
復選框和單選框是布爾型控件的例子,選中或選擇返回的為“on”,不像文本框和大多數其他的html控件,瀏覽器不包含沒有選中或沒有選擇的控件的值。
還有另外一種常用的布爾型控件,稱為html按鈕。如、、、和...類型。
button類型的控件不返回任何值,因其對窗體沒有直接的影響。即使使用用來調用窗體的submit方法,瀏覽器在任何請求中將不包含button類型控件的值。同樣,一個按鈕的值也決不會發往服務器。
然而,輸入按鈕控件submit和image類型實際提交窗體給服務器,其value屬性包含窗體的其他控件的值(只要在html定義中包含一個name屬性)。例如,這個窗體可能是向導類型web應用程序的一部分,允許用戶一步步進行或取消進程:
在一個窗體中,可以包括多個submit按鈕。在這種情況下,應該給每一個按鈕唯一的value屬性,如上所示。當一個窗體被提交時,遍歷request.form集合的值,將產生一個值,這個值依賴于按下哪個按鈕用于提交這個窗體。假如用戶按下的“previous”按鈕,將得到:
btnsubmit = previous
因此,可查詢request.form集合來決定下一個顯示的頁面,例如:
select case request.form(“btnsubmit”)
case “next”
response.redirect “page_3.asp”
case “previous”
response.redirect “page_1.asp”
case “cancel”
response.redirect “main_menu.asp”
end select
同時,也可根據需要對每個按鈕使用不同的name屬性。且選擇其值包含在form集合中的控件名稱。在控件沒有一個完整的標記而是隨后跟著較長的文本標簽的情況下,極為有用,如下圖所示。
此屏幕上的界面由下列代碼產生:
what do you want to do now?
go on the next page
go back to the previous page
cancel and go back to the main menu page
在asp頁面中,接收到數據后,可以檢查按扭名稱提供的值來判斷按下的是哪個按鈕。
if len(request.form(“btnnext”)) then response.redirect “page_3.asp”
if len(request.form(“btnprevious”)) then response.redirect “page_1.asp”
if len(request.form(“btncancel”)) then response.redirect “main_menu.asp”
這個工作是查詢一個鍵上的asp集合,如果不存在則返回一個空的字符串。換句話說,如果第二個按鈕(previous頁)按下,則request.form(“btnnext”)的值是一個空字符串,則其長度為零而不至于產生一個錯誤。當第二個按鈕按下時,則在form集合中這個條目的值request.form(“btnprevious”),將是“ ”其長度大于零。
e) 提高使用request集合的效率
訪問一個asp集合來下載一個值是費時的需計算資源的過程,因為這個操作包含了一系列對相關集合的搜索,這比訪問一個局部變量要慢得多。因此,如果打算在頁面中多次使用集合中的一個值,應該考慮將其存貯成為一個局部變量,例如:
strtitle = request.form(“title”)
strfirstname = request.form(“firstname”)
strlastname = request.form(“lastname”)
if len(sttitle) then strtitle = strtitle & “ “
if strfirstname = “ “ then
strfullname = strtitle & “ “ & strlastname
elseif len(strfirstname) = 1 then
strfullname = strtitle & strfirstname & “· “ & strlastname
else
strfullname = strtitle & strfirstname & “ ” & strlastname
end if
f) 搜索所有的request集合
在某些情況下,可能知道一個值的鍵名將出現在request集合中,但不能準確地知道是哪一個集合。例如,假如有幾個頁面(或一個頁面的不同段)發送一個值給同一個asp腳本,它可能在form或者querystring集合中出現。
本章后面部分將研究form和querystring集合的差異。
要看一下一個值為什么可能出現在不同的集合中,考慮一下這種情況:使用了超級鏈接元素請求一個頁面。在這種情況下,增加一個值到請求的唯一方法是把它加到url上。然而,同樣的值可能已出現在另一個頁面的中,或同一頁面不同部分:
...
...
...
for help go to the help page
...
在這種情況下,按下窗體上的help按鈕,將發送request.form集合中一對名稱/值“page=help”。然而,按下超級鏈接也可能發送名稱/值“page=help”,但是這次卻是在querystring集合里。為訪問這個值,可使用asp request對象的一個特殊功能:
strpage = request(“page”)
這將按序搜索全部的集合——querystring、form、cookies、clientcertificate、servervariables,直到發現第一個匹配值的名稱。這樣做比直接訪問適當的集合效率低,并且是不安全的,除非能絕對保證這個值不會出現在另外一個集合中。
例如,可能希望搜集滿足客戶請求的web服務器的名稱,這通過出現在每個查詢中的request.servervariables集合中尋找“server_name”來實現。然而,假如任一其他的集合也包含名為“server_name”的值(記住鍵名不區分大小寫),當使用request(“server_name”)時,得到的是錯誤的結果。使用reqeust.servervariables(“server_name”)句法,我們將很難進行錯誤追蹤。
總而言之,使用“搜索全部集合”技術要格外小心,且只在沒有其他技術能夠提供你需要的結果時使用。
g) 訪問其他的集合
篇10
一、摹仿簽名筆跡檢驗的理論基礎
摹仿筆跡實則改變書寫動力定型,這需要一方面排除舊的動力定型的干擾,另一方面要付出新的勞動去建立新的動力定型[2]。摹仿簽名筆跡鑒定主要依托如下要點:第一,書寫動力定型決定書寫習慣;第二,書寫習慣受人的生理結構、教育程度、書寫練習情況、氣質個性等綜合影響;第三,筆跡的反映性是簽名筆跡檢驗的物質基礎,是不依人的意志為轉移的客觀存在;第四,筆跡的總體特殊性,這是由于個人的書寫習慣具有共同性與特殊性的雙重屬性,決定了不同人的筆跡特征既有符合又有差異,而特征總和則各不相同[3]。
二、摹仿簽名筆跡的種類及其特點
由于摹仿簽名筆跡的分類尚無統一的標準,實踐中將摹仿簽名筆跡分為臨摹、套摹、記憶摹仿、練習摹仿和自我摹仿五類。
(一)臨摹簽名及其特點
臨摹即臨寫摹仿,邊觀察邊仿寫。這種手法摹仿出來的簽名筆跡與被摹簽名筆跡在字的大小、間距、搭配比例和筆畫長短等特征上都會有不同程度的差別。由于摹仿人需要邊觀察,邊思考,邊摹寫,所以常常會出現駐筆待摹現象。
(二)套摹簽名及其特點
套摹最常見的是復寫套摹和透光套摹。復寫套摹,把需要偽造簽名的文書紙張放在簽有真實簽名筆跡紙張的下面,中間放入復寫紙,用硬性書寫工具,按照真實簽名筆跡的筆路用力描繪復寫。透光套摹即用透光性較好的紙張覆蓋在簽有真實簽名的文書上面,然后按照下面真實簽名筆跡投射過來的光進行描繪摹寫。
套摹不易暴露摹仿人的習慣,但是摹仿筆跡仍有其固有特點:易出現同字重疊的征象;有的會出現色痕與劃痕不一致;復雜的筆畫或不易辨識的連續書寫動作與簡單易變的書寫動作之間的書寫速度,筆力等反映不一致;留有固定紙張的夾痕,釘孔的痕跡特征。
(三)記憶摹仿簽名及其特點
記憶摹仿指觀察記憶摹仿,亦稱背摹,具體指摹仿人為了偽裝筆跡特征,而憑借自己所記憶的被摹筆跡的形態進行書寫所形成的字跡。由于記憶摹仿只能把被摹簽名的特征突出、印象深刻的字的組成部分描繪出來,故摹仿簽名筆跡中會反映出摹仿人自身的一部分筆跡特征。
(四)練習摹仿簽名及其特點
練習摹仿是指摹仿人對被摹簽名進行一段時間反復多次練習后,在大腦皮層建立起臨時的動力定型,從而使獲得的仿寫技能再現。練習摹仿筆跡的特征是:書寫運筆較流利,一般無抖動彎曲,中途停頓,筆力平緩以及修飾重描的征象。
(五)自我摹仿簽名及其特點
自我摹仿是指在特定的情況下或為達到某種特殊的目的,摹仿人為了肯定或否定書寫筆跡與自己的一種聯系,而以自己的書寫筆跡為摹樣書寫形成的一種筆跡[7]。
三、摹仿簽名筆跡鑒定的一般方法
(一)分析檢材簽名筆跡進而正確識別摹仿
摹仿者對被摹仿人的簽名字跡有一定的了解,因而摹仿的簽名字跡與被模仿者的簽名字跡書寫水平接近,字跡的形態接近以及筆順的特征接近。鑒定摹仿簽名筆跡,就是要將真實筆跡與偽造變造的筆跡區分開來,認定摹仿事實。
1.正確把握特征,確定檢材簽名的真偽。識別摹仿簽名筆跡主要從以下幾個方面著手:
(1)書體字體,整體風貌。要觀察簽名筆跡的書體字體的風格是否一致。同時書寫人所寫的筆畫、偏旁、單字,不可能只是機械性重復,而應是具有多樣性的[8]。故觀察簽名筆跡的書寫是否自然流暢,形散而神不散,而不只是呆板的重復。
(2)筆力特征的異同。筆力的輕重有特定的點位和段位及變化規律,其規律表現為:不連接筆畫比連接筆畫的筆力重,主筆畫的筆力比附筆畫的筆力重,比連接筆畫的筆力輕重連接的變化精細自然。
(3)起收筆、運筆、連筆、轉折處的筆跡特征。起收筆、運筆、轉折處的這些細節特征是最容易暴露摹仿事實的地方。摹仿人對被摹仿筆跡的感知是有限的,不可能面面俱到。
(4)筆痕特征。筆痕是書寫習慣和書寫工具特點的綜合反映。摹仿簽名筆跡會出現壓痕、條痕、劃痕、色痕、墨痕等的反映不一致。使用套摹手法的摹仿筆跡會留下較多的筆痕特征。
2.適度了解案情,有利于正確認定檢材簽名筆跡的真偽。了解簽名人的年齡、文化程度、職業、知識結構以及書寫水平等基本情況;弄清檢材與樣本的形成條件,包括書寫工具、書寫襯墊物、書寫人心理狀態和書寫環境等。
(二)鑒定摹仿簽名確定摹仿人
1.吃透檢材、被摹仿人和嫌疑摹仿人三者的筆跡特征。這需要鑒定人全面了解三者的一般特征和細節特征,明顯特征和隱蔽特征,有形特征和無形特征。如果檢材的字數、特征比較少,那么可以倒置檢驗,即先吃透樣本,然后再和檢材比較。
2.堅持使用原件,應做到樣本的可比性強且數量充分。要創造盡可能好的鑒定條件,得出的鑒定結論才更加可靠。任何復印件都不能比反映原件更好的反映真實細節的特征。
3.善于運用各種檢驗方法。觀察法即目力直接觀察或借助放大鏡、顯微鏡是識別檢驗摹仿簽名筆跡的基本方法;測量法,運用專業的儀器測量字跡的大小,筆畫的粗細、深淺、長短、弧度,筆力的輕重,進一步進行系統分析;對比法,將摹仿簽名和正常簽名的起收筆、運筆、筆順、書寫工具、書寫紙張等等進行比較。
4.綜合評斷,科學合理地解釋檢材中出現的筆跡特征的變異。簽名筆跡的形成往往是在不同時間、地點和不同條件下書寫形成的,它們之間必然存在一定的差異,一般由以下幾種原因形成:(1)時間因素。人的一生中的簽名字跡自形成一般要經歷從幼稚、呆板到成熟,從普通到流暢、有特色幾個過程,不同時期書寫人的簽名習慣會有所差別;(2)書寫的姿勢因素。個人書寫姿勢的不同在簽名上會表現出不同的特征差異;(3)書寫工具和承受物因素。不同的書寫工具,承受物的軟硬、厚薄等都可產生筆跡特征的差異;(4)受書寫環境和書寫人的心理因素影響。書寫人在簽名時書寫環境安靜或吵鬧,人緊張或不安等也會使得簽名字跡產生差異。
摹仿簽名筆跡的檢驗的確有一些難度,但是只要我們對檢材簽名字跡進行深入細致的研究,認真分析其細節特征,掌握檢材簽名字跡的規律特征,并且與符合要求的樣本簽名字跡進行比較,綜合地分析書寫人的心理和生理狀態等因素,確定筆跡特征形成的真正原因,并且結合案情進行分析,就能夠得出科學的結論。
參考文獻
[1]賈治輝.文書檢驗[M].北京:中國民主法制出版社,2007
[2]張公正.關于摹仿簽名筆跡之探索[J].公安大學學報,2002(1)
[3]柯昌林.摹仿簽名筆跡檢驗[D].西南政法大學,2007
[4]吳琦.淺析臨摹書寫筆跡的檢驗[J].沿海企業與科技,2006,(12)
[5]劉小燕等.套摹字跡檢驗之我見[J].廣西警官高等專科學校學報,2007
[6]賈治輝、柯昌林.專業性練習摹仿簽名筆跡鑒定的實驗研究[J].刑事技術,2007,(5)
[7]賈治輝.自我摹仿筆跡鑒定研究[J].政法學刊,2002,(4)
[8]馬茲河等.從摹仿簽名筆跡特征探究檢驗及鑒定[J].中國司法鑒定,2008(2)
[9]許耀明.摹仿簽名字跡的點滴體會[J].刑事技術,2003,(4)
作者簡介