特殊名字符号范文

时间: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)把古今兼容,承传创新,塑造独特个性的意念融入到招贴的文字设计中。以书法的方式画出造型的轮廓,表现画面的意境,这是对文字形态上的创造;中国的“文房四宝”即笔、墨、纸、砚四宗器物之符号语言,分别融合在这四副“字画”中,达到了文字与工具符号的完美结合,充分体现出书法和传统思想的完美结合,从中还散发着化物为意的气息,给人遐想“笔架山”、“静止(纸)水”、“沿(砚,意沿海台风)”、“墨色云”,也体现着文化与自然的相互联系,影响着我们现代人。

字体是视觉传达设计美感四大表现元素之一,对文字作适当的变形,每一处的变形又是有道理和依据的,能够让人看懂是什么字,又能传达作者的创意。“看得懂”与“看不懂”是介于符号学上的所指与能指的关系,受众根据作者的创意结合自己的理解领会出其中的意义。如图2《声、色、艺》图形文字设计,将传统中国戏曲元素与书法文字的组合,“声”是发出的声音,是物体振动时所产生的能引起听觉的波,“鸟”是能发声的一种动物;“色”由物体发射、反射的光通过视觉而产生的印象,中国戏曲中的“蝴蝶”颜色的丰富多彩;“艺”古代指六艺以及术数方技等各种技能,戏曲中的“帽子”也是中国戏曲艺术的代表之一;分别提取书法的文字形态和中国戏曲的寓意等基本元素,重新构成全新意义上的视觉化符号,具有它的所指和能指的意义。它们代表中国传统文化,有着悠久的历史。各自具有的结构、韵律、形态、寓意通过不同的文字、图形结合能够表现出独特的符号美。

日本的平面大师福田繁雄以《F》(如图3)为主的招贴,主画面为福田繁雄名字的首字母“F”为基本型,保持不变,进行图形元素的创意置换。“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个,基本能满足日常生活用字(生僻人名、地名字除外)。要利用该字库,通常可采用下列几种方法。

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],我们就不必为区区几千年的汉字史里的象形问题而烦恼了。

(四)

从隶书甚至篆书开始的汉字,已很难直接和象形挂上钩。也许有学问的书法家会为汉字所包含的具象因素而激动,但他们得认识到,这些类似于阑尾的东西不过是早期文字实验失败后留下的痕迹。对于那些想当然的书法家来说,他们最好能够知道,把“舞”字写成跳舞的美女,和“持牛尾而舞”的原始图形没有丝毫的联系。如果偏好把字写成画的话,他们干嘛不直接去画人体写生呢?

如上所述,汉字的构造过程中发生过两次挪用,第一次是把图像挪用为文字,第二次是把象形字挪用为音符、意符或记号。现在我们知道,成熟时期的汉字构字法基本上是没有象形的地位的。实证研究表明,“汉字形成完整的文字体系之后,新增加的字多数是通过加偏旁或改偏旁等途径从已有的字分化出来的。”[23]因为要和语言相匹配,汉字最终放弃了图解世界的企图。不过,汉字的确不是语音的奴仆。作为一个和拼音文字同样完美的系统,汉字不仅有着独特的构字法则,而且有着独具价值的造型潜质。

汉字写起来很麻烦,但其偏旁、部件和笔划有限,笔顺也是一定的,汉字符号系统达到的这种有序性令人叹为观止,但又难以清晰地加以表述。王羲之的《兰亭序》确立了行书的典范,这份字帖并没有收录足够多的汉字,但它的临摹者却可以推而广之,把每一个汉字都写成王氏行书。书法系统的有序性无疑是以汉字系统的高度有序性为基础的。书法家的字帖和帐房先生的书信,毛笔书法和硬笔书法,繁体字和简体字,它们之所以能保持某种连续性,不是因为它们是随心所欲的文字画,而是因为它们是对自成系统的文字符号的书写。英语的构词法无疑也具有某种可理解的有序性,但这和26个字母的写法没有直接的联系。在抄写和印刷的过程中,字母也能写出优美的风格,但它们每发生一次整体变化,毕竟只能造成26种视觉差异。

汉字可考的历史只有三千三百年[24],但这三千三百年的历史,是同一种语言连续书写的历史。从古文字到隶、楷、行、草,无论是从字体,字形,还是从字的风格造型,每一个新的差异,无不建立在与以往微妙的相似中。书法的历史远比文字学的历史要宽容,它不仅容纳正确的东西,也容纳错误的东西。而在以艺术而不是以实用为目的的书写中,文字有权变得和语言若即若离。汉字在和语言的匹配过程中,发展出了一套高度有序的偏旁、笔划体系,这套体系即使脱离了汉语,也一样具有汉字的魅力。日本的书法,的天书,都是这种类型的东西。它们不是因为和汉语言相匹配而成为书法,而是因为和历史上的汉字具有系统性的相似。把单个的汉字放大,把写好的字揉成字球,这些举动貌似背离传统,实际上恰好是建立在传统的基础上的。

当然,在传统中进行创作和利用传统来进行创作是全然不同的。明眼人都看得到,老祖宗传下来的东西,就像野生动物的物种那样,在一天一天、一小时一小时地离我们而远去。

(五)

一般的书法理论往往从审美特性这个角度出发来总结书法的成就,本文并不否认这种探索的意义。但是,当我们过多地把目光集中在书法之“美”或书法所激起的“审美体验”上时,却往往忽视了书法和写字之间的朴素联系。

我们觉得书法是艺术的,而写字却是实用的,可是说到头,书法家不过是无穷无尽的写字者中的一员。书法家卓然独立,只是因为他把某个字体写到了极致,从而使它具有典范的意义。人们常常在“永恒”或“超时空”这个意义上来理解典范,殊不知典范的一个更为素朴的含义却是“榜样”。孔子是人格的榜样,颜体是书法的榜样。桃李不言,下自成蹊。没有“群众”的争相效仿,哪有高楼可以独上?

书法家从不空穴来风。在书法家的书法[25]产生之前很久,汉字已经在集体书写的基础上形成了自己的形态。无论是无名氏还是书法家,为了书写汉语和汉字,都不得不首先遵从汉字的规则。汉字是一套高度有序的符号系统,从原则上来说,要想把握一个字的间架结构,就不得不把握所有字的间架结构。一辈子只会画自己名字的书法家不仅没有听说过,而且也是极其可笑的。

符号学美学关心汉字和书法的有序性。承认书法之美依赖于汉字符号系统的有序性,并不会削弱我们对书法艺术家独创性的评价。在西方传统美学的影响下,我们把创作者的迷狂状态看得过于神秘了。许多人觉得,不管是在作者那里,还是在读者那里,都有一种全然不同于日常经验的“审美经验”(aesthetic experience)在起作用。然而,笼而统之用“审美经验”来说事,非但不能增加艺术性,反而会败坏具体而微的艺术感觉。相形之下,用“龙跳天门”、“高峰堕石”、“夏云舒卷”来形容书法的古人,反倒要离事情本身更为接近。

我们常常把审美经验理解为主观的感受。然而,好的感觉(good sense)从来都是在和事物打得火热的过程中体现出来的。伟大的书法家不仅善于和笔墨纸砚打交道,而且善于和汉字打交道。现在我们已经知道,作为书法基本造型“材料”的汉字,既不是象形的图画,也不是抽象的图案,而是一套具有极强抽象性和系统性的符号。汉字对于文字学家来说是一种符号,对于书法家来说,却是一种质料。书法家并不关心如何在理论上把握文字的符号性,他们关心的是这些符号性的文字如何从感性上得以生动的显现。就跟玫瑰花不会被它的所指(爱情)耗尽一样,在以写字为美的文化生活形式中,文字的能指也不会被它的所指耗尽――人们在读懂字义的同时,也停留在字的表面,琢磨如何把字写得更好。

然而,在当今这个时代,汉字越来越成为一种单纯为语言服务的记号。数码化的汉字固然也保留了各式各样的字体,甚至各式各样的书法式样,但是今日之大众并不打算去临摹它们,而是更愿意像拣字工人那样消耗它们。无论是五笔型,还是拼音输入法,都是依赖某种检索系统把事先准备好的汉字一个一个拣出来。用笔来书写汉字,却没有这么现成。写字的人不仅一笔一划都不能漏过,而且在每一个笔划上都存在着胜负生死的可能。书法家是精益求精的写字人,和拣字工人不同,他从不把汉字看作现成的可以消耗的材料,而是看作不确定的、需要反复加以形成的东西。文字是书法家所利用的质料,但是好的书法作品非但“不会使质料消失,倒是才使质料出现”[26]。金匠的任务是使金属熠熠生辉,画家的任务是使颜料发光,诗人的任务是使声音朗朗可听,书法家的任务又是什么呢?

当电脑键盘摧毁了书法赖以生长的广阔的民间土壤时,汉语和汉字并没有随之消亡,但是,书写汉语的活动在某种意义上已经终结了。一方面,汉字变得越来越像是纯粹的记号,另一方面,书法变得越来越像脱离语言的图像。这是一件事情的两个方面。

2003年6月21日

注释:

[1] 索绪尔,《普通语言学教程》,商务印书馆1996年,第38页。

[2] 裘锡圭,《文字学概要》,商务印书馆1998年,第30-31页。

[3] 裘锡圭,《文字学概要》,商务印书馆1998年,第10页。

[4] 陈嘉映,《语言哲学教程》,北京大学出版社2003年,第1章,第7节。

[5] 李幼蒸,《理论符号学导论》,社会科学文献出版社1999年,第46页。

[6] 赵元任先生曾说,“符号之所以为符号,并不是从符号的本身上可以看得出来的,是看这事物有所代表没有,假如某事物是代表他事物的,无论两者是属何性质,前者就叫后者的符号,后者就叫前者的对象。所以符号与对象,犹如师生父子等相对的名词,不是绝对的名词。”见赵元任《符号学大纲》(1926年)。

[7] 陈嘉映,《语言哲学教程》,北京大学出版社2003年,第5章,第2节。

[8] 注意,并不是心里先有了一套概念系统,再配上声音,能指与所指是同步生长起来的,如陈嘉映先生所言,“幼儿牙牙学语,他的声音一开始没有意义,后来有了意义,这不是后来把意义附加到了声音上面,而是声音生长成为有意义的声音”。见陈嘉映,《语言哲学教程》,北京大学出版社2003年,第5章,第2节。

[9] 参见朱狄,《艺术的起源》,中国青年出版社1999年。

[10] 索绪尔,《普通语言学教程》,商务印书馆1996年,第47页。

[11] 裘锡圭,《文字学概要》,商务印书馆1998年,第2页。

[12] “仓颉之初作书也,盖依类象形,故谓之文。其后形声相益,即谓之字。文者,物象之本;字者,言孳乳而寖多也。着于竹帛谓之书。书者,如也。”见许慎《说文解字序》。

[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

这允许既可以缺省(即无value)显示选项文本,也可做相应的改变。后一种情况在某些情况下是极为有用的,如要显示(一个说明的字符串)和传递一个完全不同的内容(如用一个短码代表一个说明性的字符串)。

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)

作者简介