`
heiheben
  • 浏览: 136611 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

全角和半角转换程序解析

阅读更多

昨天看到一个半角和全角转换的程序 ,程序直接贴在下面


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>Quanjiao To Banjiao</title> <script language="javascript"> /***************************** * 半角<=>全角 * * Writer Peng Meizhou * **************************** *参数说明: * str:要转换的字符串 * flag:标记,为0时半转全,为非0时全转半 * 返回值类型:字符串 *****************************/ function DBC2SBC(str,flag) { var i; var result=''; if (str.length<=0){ return false; } for(i=0;i<str.length;i++) { str1=str.charCodeAt(i); if(!flag) { if(str1<127){ result+=String.fromCharCode(str.charCodeAt(i)+65248); }else{ result+=String.fromCharCode(str.charCodeAt(i)); } }else{ if(str1>126){ result+=String.fromCharCode(str.charCodeAt(i)-65248); }else{ result+=String.fromCharCode(str.charCodeAt(i)); } } } return result; } function QtoB() { var strqb=document.all["qb"].value; document.all["qb"].value = DBC2SBC(strqb,1) } function BtoQ() { var strbq=document.all["bq"].value; document.all["bq"].value = DBC2SBC(strbq,0) } </script> </head> <body> <p> <input type="text" name="textfield" id="qb"/> <input type="button" name="Button" value="QtoB" onclick="QtoB()" /> </p> <p> <input type="text" name="textfield2" id="bq"/> <input type="button" name="Button" value="BtoQ" onclick="BtoQ()" /> </p> </body> </html>

 

 


我比较不理解的是,为什么上面的常量是65248而不是别的,然后我就开始查半角和全角,在百度上得到一个答案

我现在将半角和全角的百度解释粘贴一下


全角/半角字符

A 什么是全角和半角?(1)全角--指一个字符占用两个标准字符位置。汉字字符和规定了全角的英文字符及国标GB2312-80中的图形符号和特殊字符都是全角字符。一般的系统命令是不用全角字符的,只是在作文字处理时才会使用全角字符。 (2)半角--指一字符占用一个标准的字符位置。通常的英文字母、数字键、符号键都是半角的,半角的显示内码都是一个字节。在系统内部,以上三种字符是作为基本代码处理的,所以用户输入命令和参数时一般都使用半角。 B 全角与半角各在什么情况下使用?全角占两个字节,半角占一个字节。半角全角主要是针对标点符号来说的,全角标点占两个字节,半角占一个字节,而不管是半角还是全角,汉字都还是要占两个字节。在编程序的源代码中只能使用半角标点(不包括字符串内部的数据)在不支持汉字等语言的计算机上只能使用半角标点(其实这种情况根本就不存在半角全角的概念) 对于大多数字体来说,全角看起来比半角大,当然这不是本质区别了。 C 全角和半角的区别全角就是字母和数字等与汉字占等宽位置的字。半角就是ASCII方式的字符,在没有汉字输入法起做用的时候输入的字母数字和字符都是半角的。 在汉字输入法出现的时候,输入的字母数字默认为半角,但是标点则是默认为全角,可以通过鼠标点击输入法工具条上的相应按钮来改变。 D 关于"全角"和"半角":全角:是指中GB2312-80(《信息交换用汉字编码字符集·基本集》)中的各种符号。半角:是指英文件ASCII码中的各种符号。


但也就是这个解释搞得我一点都没有头绪,我将GB2312-80这个国家标准都下下来看了,总觉得按照他这个理解半角和全角根据差不了65248的,而是41856(十六进制为A380)。我就琢磨不透了。

又查到另外一个版本的解释:

///全角空格为12288,半角空格为32 ///其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248

这下子更不知所措了,因为在GB2312码中, 65281-65374根本就是保留的

就在这个时候我想到了,为什么不从转换程序中的函数入手呢。呵呵 这个思路很正确,马上得到证实


JavaScript中fromCharCode和charCodeAt方法 fromCharCode 方法 说明:从一些 Unicode 字符值中返回一个字符串。 示例: <script language="javascript">document.write("fromCharCode 方法<br>输入一个数字:<input type='text' id='ipt' size='10' value='90'> <input type='button' value='点我一下' onclick='alert(String.fromCharCode(document.getElementById(\"ipt\").value))'>")</script> charCodeAt 方法 说明:charCodeAt(index : Number)返回一个整数,该整数表示 String 对象中指定位置处的字符的 Unicode 编码。一个字符串中的第一个字符位于索引位置 0,第二个字符位于索引位置 1,依此类推。如果指定 index 没有字符,将返回 NaN。 示例: <script language="javascript">document.write("charCodeAt 方法<br>输入一个字符:<input type='text' id='ipt' size='10' value='a'> <input type='button' value='点我一下' onclick='alert(document.getElementById(\"ipt\").value.charCodeAt(0))'>")</script>


原来这些转换都是以UNICODE编码为基础的,哎 这就好办了

我查找一下在ascii表中!-~的编码是33-126(只所以从!开始,是因为这个第一个可视字符)

我们再找一下在UNICODE编码表中!-~的编码为65296(FF10)-65374(FF5E)

看到了吧,其实上面我查到的关于半角和全角的说法都是有问题的

在GB中和在UNICODE中对于全角字符的编码是不一致的,而给出的函数是针对UNICODE编码的,所以常量为65248

其实我认为半角和全角区别的最权威的说法是全角就是字母和数字等与汉字占等宽位置的字

<!---->Del.icio.us : GB2312 半角 全角 编码

分享到:
评论

相关推荐

    java全角半角转换程序

    Java全角半角转换程序不仅展示了字符编码转换的基本原理,还提供了实际编程中可能遇到的挑战和解决方案。通过理解和掌握这些知识点,开发者可以更加灵活地处理不同场景下的字符编码问题,从而提升软件的国际化和用户...

    C#实现全角字符转换成半角字符

    根据给定文件的信息,我们可以总结出以下详细的IT知识点: ### C# 实现全角字符转换成半角...总之,通过上述方法可以有效地实现全角字符到半角字符的转换,这对于处理包含中文或其他亚洲语言的应用程序来说非常重要。

    Split-由任意个全角或半角空格分隔开的任意长度的字符串

    在IT行业中,字符串处理是一项基础...总之,“Split”操作在编程中扮演着重要角色,特别是在涉及到用户输入、数据解析和数据库查询的场景下。理解并熟练运用字符串拆分技巧,能够帮助我们编写出更加高效和灵活的代码。

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

    全角字符和半角字符之间的转换主要依赖于Unicode编码表中的规则。具体而言,全角字符的Unicode码点范围通常位于`0xFF01`至`0xFF5E`之间,而对应的半角字符则可以通过简单的偏移量计算得出。对于大部分全角字符来说,...

    asp(javascript)全角半角转换代码 dbc2sbc

    ### ASP与JavaScript全角半角转换技术解析 #### 一、引言 在处理文本数据时,经常会遇到全角字符和半角字符的转换需求。全角和半角字符主要区别在于显示宽度不同:全角字符占两个半角字符的位置。这种差异在中文...

    输入法全角补丁

    在IT领域,输入法全角补丁是一种专门用于修复输入法显示或切换问题的程序更新。全角字符在中文输入法中占据两个字节的空间,通常用于汉字、标点符号等,而半角字符则占用一个字节,适用于英文、数字和部分标点。在...

    全半角转换

    全半角转换的实现通常涉及到字符编码的解析和转换。在编程中,可以使用特定的函数或者方法来完成这个过程。例如,在Python中,可以使用`str.replace()`函数结合ASCII码或Unicode码进行转换;在Java中,可以使用`...

    Python 含中文分词的多项式贝叶斯的增量学习的文本分类.rar

     程序实现功能:全角转半角、解析文件内容、从原始文件中解析出文本内容和标签数据、以列表形式返回文本中的所有内容和对应标签、交叉检验、将训练集文本数据转换为稀疏矩阵、全角转半角/中文分词/将文本标签转换为...

    .NET formwork 2.0 全角BUG 补丁 VS2005

    在编程中,通常需要使用半角字符,因为它们符合ASCII编码标准,有利于程序的正确解析和数据传输。然而,当VS2005遇到这个全角BUG时,即使开发者在编写代码时使用的是半角字符,程序运行后仍可能变为全角,导致编码不...

    应用Microsoft SQL Server 7.0要注意全角(中文)逗号的使用.pdf

    3. **转码处理**:如果数据中不可避免地包含全角逗号,可以使用转换函数将其转换为半角逗号,或者在处理时使用特定的分隔符策略,如使用非中文字符或特殊字符作为分隔符。 4. **使用参数化查询**:在执行动态SQL时...

    vc10获取pdf中的文字

    这两个文件结合使用,可以帮助我们更好地理解和实现PDF文本的提取及全角到半角的转换过程。 总之,PDF文本的提取涉及PDF解析、字符编码转换等多个技术环节,通过选择合适的库和工具,可以有效地完成这项任务。在...

    中文符号转E文符号

    可以使用`System.Globalization`命名空间中的`CharUnicodeInfo`类来帮助识别和转换全角与半角符号。 总的来说,中文符号转E文符号是一个实用的文本处理功能,它涉及字符编码和文本解析的知识。通过编程实现这一功能...

    计算机教师招聘试题(含答案、超级、集合版).doc

    16. 全角与半角的区别:全角和半角主要区别在于字符占用的空间,全角模式下输入的英文字符和汉字同样大小,而半角模式下英文字符是汉字的一半大小。 **多项选择题** 1. 二进制数:A、B、C是正确的二进制数,而D中...

    2016山东专升本计算机答案及解析.doc

    9. 输入法切换:在全角和半角之间切换、中文输入法和英文输入法之间切换、Excel单元格内换行输入的快捷键,以及取消已选定文件的操作。 10. 剪贴板操作:Ctrl+C用于复制,Ctrl+V用于粘贴,Alt+PrintScreen用于复制...

    北语15春计算机基础作业1试卷.pdf

    17. 全角和半角切换:在中文Windows下,Shift+Space用于在全角和半角状态之间切换。 18. 国标码GB/T2312-1980:国标码收录了6763个汉字和图形符号。 19. 计算机内部信息表示:计算机内,信息通常以二进制码的形式...

    域控中日常遇到的问题

    解决方法是更改字体设置,确保使用支持多种语言的字体,或者将字体的全角模式转换为半角模式。全角和半角模式主要影响字符的宽度,全角模式下每个字符占用两个标准字符的宽度,而半角模式则占用一个。在Outlook中,...

    计算机职称习题.pdf

    - **解析:** 在Windows中,可以通过按Shift+空格键来实现全角与半角状态之间的切换。故选A。 #### 十九、控制器的基本功能 - **知识点:** 控制器在计算机系统中的作用。 - **解析:** 控制器的主要职责是协调和...

    python根据unicode判断语言类型实例代码

    此外,脚本还提供了两个函数用于进行半角和全角字符之间的转换: - **`B2Q(uchar)`**: 半角转全角 - **特殊情况**:对于空格(`\u0020`),转换为全角空格(`\u3000`) - **转换规则**:对于其他字符,全角 = 半角...

    易语言资源网搜索

    2. 输入处理:这部分代码会获取用户输入的关键词,并进行预处理,如去除多余空格、转换为全角或半角字符,以及进行URL编码。 3. 网络请求:利用易语言的网络库,创建HTTP请求,将编码后的关键词作为查询参数发送到...

    重庆计算机一级考试真题二.pdf

    18. 全角半角切换:按Shift+空格键可以在全角和半角状态之间切换。 19. 打开"开始"菜单无鼠标操作:按Ctrl+Esc键可以打开"开始"菜单。 20. Windows剪贴板:剪贴板是内存中的一块区域,用于临时存储剪切或复制的...

Global site tag (gtag.js) - Google Analytics