`
lzzy_alex
  • 浏览: 30153 次
社区版块
存档分类
最新评论

输入法中的全角与半角

 
阅读更多

问:输入法为什么有全角半角之分

 

这要从发展史说起:
1. 二进制
计算机普遍遵循冯诺依曼结构体系,它规定了计算机内部以二进制为主要数制(这和电路有关),所以计算机只认识二进制的0或1。其它符号比如十进制的[2-9],字母[a-zA-Z],标点符号,中文等等是不认识的。那么,当我们说"a"的时候,它是怎么理解的呢?

2. 编码表
即然计算机只认识01符号,那我们就可以建立一套"映射系统",比如
a <--> 00000001
b <--> 00000010
c <--> 00000011
当我们说"a"的时候,计算机就理解为"00000001",即一个符号,用一串唯一的二进制表示,这套"映射系统"就称为编码表。

3. ASCII编码表
因为早期的计算机只在发达的欧美国家使用,所以这套"映射系统"是根据英文规则设计的,叫ASCII表,规定用8位长度的二进制表示一个字符,最多可以表示 2^8 = 256 个字符。ASCII表涵盖了英文字母,数字,和常用的英文符号,比如",.+-"等,
可普通汉字就有6万多个,很明显8位的ASCII编码方案满足不了中文系统的要求,比如中文 "啊"就无法用ASCII表示。

4. 中文编码表
由上我们知道,只要再设计一套长度更大的"映射系统"就可以解决问题了,比如
啊 = 00000000 00000001
哦 = 00000000 00000010
即使用16位二进制(两字节)表示一个汉字,最多可表示 2^16 = 65536 个。
早期中文系统设计的时候,是用GB2312标准,但这套标准有部分的汉字,符号,少数民族用语是没有映射过去的,比如在GB2312中就打不出“镕"字,所以往后就出了编码范围更大的编码表,如GBK,GB18030。这些编码表只有一个区别,就是能表示的汉字或符号范围越来越大了,但相应的,需要映射的二进制位数也越来越大了,即汉字可能需要用2-4位字节(16-32位二进制)表示,存储成本增加了。

5. 全角与半角
综上,我们知道
5.1 计算机只认识二进制01,所有的字形符号都是通过编码表(映射系统)翻译实现的
5.2 在英文系统的编码表里,有用一字节表示的标点符号,如英文逗号","
5.3 在中文系统的编码表里,有用N(1-4)字节表示的标点符号,如中文逗号",”

语义上我们统称为逗号,但计算机实际表现形式是不同的
英文逗号"," 在ASCII规则下是 00101100,一字节长,屏幕打印宽度是一个宽度
中文逗号"," 在GBK规则下是 10100011 10101100,两字节长,屏幕打印宽度是两个宽度

半角就是指 ASCII 编码表以内的标点符号,它们都是占一个字节,一个打印宽度的
全角就是指在ASCII编码表以外,如GBK,BIG5, Unicode等编码规则下的,多字节的标点符号,屏幕打印宽度通常是两个宽度,即一个汉字宽度。
简言之,ASCII以内的就叫半角符号,以外的就叫全角符号。

6. 回答楼主问题
为什么中文输入法会提供全角半角切换的功能,主要目的我猜是这样的
1. 中文编码表 (GB2312/GBK..) 向下兼容ASCII,但出现了符号冲突,比如有英文逗号,和中文逗号,当用户想输入逗号时,不知道该给出ASCII表内的逗号,还是中文编码表中的逗号。有了全角和半角,用户就可以自己选择,而不用切换成其它输入法了。
2. 中文对齐与美观
3. 存储成本,半角只占一字节,全角占多字节

分享到:
评论

相关推荐

    CS2005中winfrm解决输入法自动全角到半角转换 回车光标到下一个控件

    在某些情况下,当用户在WinForms应用中的文本框(TextBox)使用中文输入法时,输入的字符可能会在按下空格键或者特定键(如回车)后自动从全角模式切换到半角模式。全角字符占用双字节,而半角字符占用单字节。这种...

    Java输入法中全角转半角工具类

    Java输入法中全角转半角工具类: 适用于文件上传,Excel上传输入法格式不对导致的数据不对,通通过滤掉

    pb全角转半角

    在中文输入法中,全角字符常用于汉字和一些特殊符号,而半角字符则用于英文和数字等。 全角转半角的过程主要涉及字符编码的转换,这是因为全角字符在Unicode或GB2312等编码体系中使用,而半角字符在ASCII编码中使用...

    解决全角与半角问题

    安装此类更新有时能解决一些与程序兼容性或运行时环境相关的问题,但在这里它可能并不是直接解决全角半角问题的工具。然而,如果VS2005开发的程序依赖于.NET Framework,并且存在与此更新相关的兼容性问题,那么安装...

    全角和半角的区别.docx

    输入法是另一个与全角和半角选择密切相关的应用场景。在中文输入法中,用户可以根据需要切换全角和半角状态来输入中文或英文字符。例如,在需要输入中文环境下的标点符号时,使用全角字符可以保持文本的美观和一致性...

    .net下数字全角转半角

    `转全角半角(C#,VB_NET) - RubyPdf 的中文博客 - 博客园.htm`、`C#中直接调用VB_NET的函数,兼论半角与全角、简繁体中文互相转化 - 空军 - 博客园.htm`等文章则深入探讨了全角半角转换以及跨语言调用的具体实现。...

    NET全角变半角补丁

    在.NET框架下进行编程时,有时我们可能会遇到输入法在英文(半角)和中文(全角)状态之间切换的问题,这可能导致字符处理时出现不一致的情况,尤其是在处理字符串长度、格式化输出或数据校验时。"NET全角变半角补丁...

    如何切换mac全角半角.docx

    由于原生拼音输入法在Mac OS中没有提供直接的全角半角切换功能,因此用户们常常需要借助第三方输入法来实现这一需求。 “拼音for mac”是一款专为Mac用户设计的中文输入法,其设计初衷就是为了让Mac用户能够像在...

    VS2005设置中文输入法(处理了全角问题)

    在开发过程中,尤其是在使用Visual Studio 2005(VS2005...总之,VS2005中的中文输入法设置和全角半角问题处理是编程实践中常见的需求。正确理解和运用这些知识点,能帮助开发者更好地创建符合中文用户习惯的软件应用。

    .net托管控件TextBox,提供属性返回当前ime状态是全角还是半角

    全角和半角状态是中文输入法中的两种常见模式,它们主要区别在于字符的宽度和所占用的存储空间。 全角模式下,每个字符占用两个标准的ASCII字符宽度,适用于输入汉字、标点符号以及一些特殊字符。而在半角模式下,...

    JavaScript 全角转半角部分

    比如,将用户输入的全角字符转换为半角字符以便存储到数据库中,或者在显示数据时转换为半角字符以适应特定的显示效果。 #### 3. JavaScript实现全角转半角的方法 在上述【部分内容】中提供了两种使用JavaScript...

    VS2005全角半角切换补丁.rar

    标题“VS2005全角半角切换补丁.rar”指的是针对Visual Studio 2005(简称VS2005)的一个特定补丁,该补丁旨在解决在使用该IDE进行编码时遇到的全角和半角字符切换问题。在编程中,全角和半角字符的区别至关重要,...

    输入法全角补丁

    总的来说,"输入法全角补丁"是解决输入法异常问题的有效工具,它优化了用户在全角和半角输入间的切换体验,尤其对经常需要混输中英字符的用户来说至关重要。理解补丁的作用以及如何正确安装和使用,对于提升日常办公...

    全半角转换函数

    在屏幕上,全角字符与半角字符相比,宽度是其两倍。 - **半角字符**:基于ASCII编码的字符,每个字符占用一个字节。在英文和大多数符号中,半角字符占据一个标准的字符宽度。 2. **C#中的字符串处理** C#中的字符...

    C#实现字符串全角半角转换类

    这个`CharConverter`类提供了简洁的API,可以方便地集成到任何C#项目中,用于处理全角半角字符的转换需求。通过理解字符编码和Unicode码点,我们可以更好地理解和实现这类转换功能,这对于开发涉及多语言或特殊字符...

    C#实现全角输入转半角自动切换

    在日常的软件开发过程中,经常会遇到一些与文本处理相关的功能需求,比如将用户输入的全角字符转换为半角字符。这样的功能不仅能够提升用户体验,还能避免因为字符编码差异导致的数据不一致问题。本文将详细介绍如何...

    全半角输入法混乱补丁

    中文输入法全角问题 补丁说明 1、微软最新发布的补丁,解决了数据录入时输入法自动切换为全角的问题; 2、系统软件安装完成后,双击“NDP20-KB925488-X86.exe”文件,按照提示即可完成补丁安装; 3、安装完成...

    C#控制键盘输入全角半角

    因此,大部分情况下,我们会选择前面提到的事件处理方式或WinAPI函数来实现控制键盘输入全角半角的功能。 总的来说,C#提供了多种方法来控制键盘输入的全角和半角状态。根据项目需求和开发者的熟悉程度,可以选择...

    用C#实现全角半角转换

    加载窗体时,焦点默认处于TextBox1上,用C#源代码实现全角半角互相切换,在控件的Click事件中触发来调整输入法状态,思路:声明一些相关的API函数,检查输入法的全角半角状态,如果输入法处于打开状态则检索输入法...

    .net2.0中文输入法全半角补丁

    标题中的".net2.0中文输入法全半角补丁"指的是针对.NET Framework 2.0版本的一个更新,主要是为了解决在Visual Studio 2005(VS2005)环境中使用非微软(MS)提供的中文输入法时,输入状态会自动切换到全角模式的...

Global site tag (gtag.js) - Google Analytics