`
mmdev
  • 浏览: 13023104 次
  • 性别: Icon_minigender_1
  • 来自: 大连
文章分类
社区版块
存档分类
最新评论

判断一个字符是双字节还是单字节

 
阅读更多
对于字符串的处理,经常会遇到需要判断字符是双字节还是单字节(或者全角和半角)的情况,因为双字节字符和单字节字符在屏幕上所占用的空间是不同的,通常情况下双字节字符占用的空间是单字节字符的两倍。比如,一个字符串,可能包含中文英文数字和各种符号等等,将其输出到屏幕上,需要根据长度判断在哪里进行截断(网页编程中经常用到)。
最常见的两种方式。
一种是通过String的getBytes().length来判断,单个字符构成的字符串,其getBytes().length若大于1,则为双字节字符,否则为单字节字符。不过需要注意的是,这种方式有一定缺陷,就是当使用英文操作系统来执行getBytes().length这句代码的时候,单字节双字节文本得到的结果是一样的。这是因为不同的JAVA虚拟机对于字符的处理方式不同。所以,虽然这种方法很简单,而且在大多数时候很有效,但是考虑到可能会有少部分使用英文操作系统的人,还是建议用下一种方法。
另外一种是通过判断某一位的字符是否大于0x80,如果大于则为双字节字符,否则为单字节字符。
分享到:
评论

相关推荐

    超实用c#按字节截取长度(原创)

    当剩余一个字节时,再进行判断下一个字符是否是单字节字符,如果是单字节,则把这个字符一起做为结果返回。如果双字节字符,则将下一个字符放弃,直接返回已经截取的字符串的长度。 用此方法为指数形式截取,一般...

    中英文字符串分割算法C++C程序示例

    从 cut_base_pos 开始到 pos_B 结束的这段字符串内, 最后一个单ASCII字符的结束下标 p 在此基础上, 若使用: y -- 表示单ASCII字符(已确定的); x -- 表示可能是 单ASCII字符,也可能是 汉字的半个ASCII存储码...

    计算机二级C语言字符型数据考点归纳:字符常量.docx

    在内存中,字符常量占一个字节,而字符串常量则在字符串的后面加一个″字符串结束标志″,以便系统据此判断字符串是否结束。 四、字符串常量的存储 字符串常量在内存中的存储方式是:在字符串的后面加一个″字符串...

    汇编语言 20个练习题目 代码加实验报告

    5.2 编写程序,从键盘接收一个小写字母,然后找出它的前导字符和后续字符,再按顺序输出 5.3 将AX寄存器中的16位数分成4组,每组4位,然后把这四组数分别放在AL、BL、CL、DL中。 5.4 试编写一程序,要求比较两个字符...

    oracle求字符串长度函数length()和hengthb()简介

    对于单字节字符,LENGTHB和LENGTH是一样的. 如可以用length(‘string’)=lengthb(‘string’)判断字符串是否含有中文。 注: 一个汉字在Oracle数据库里占多少字节跟数据库的字符集有关,UTF8时,长度为三。 ...

    keil c 单片机串口通信多字节收发

    串口是计算机上一种非常通用设备通信的协议(不要与通用串行总线Universal Serial Bus或者USB混淆)。...这样使得接收设备能够知道一个位的状态,有机会判断是否有噪声干扰了通信或者是否传输和接收数据是否不同步。

    北理工_汇编_实验三_字符串操作实验.doc

    MOVS 传送指令可以将源变址存放器指向的数据段中的一个字〔或字节〕数据传送到目的变址存放器指向的附加段中的一个字〔或字节〕中去,同时根据方向标志及数据格式〔字或字节〕对源变址存放器和目的变址存放器进展...

    php字符串截取中文截取2,单字节截取模式

    介绍了php字符串截取中文的截取方法,涉及php字符串遍历、计算、判断等相关操作技巧,需要的朋友可以参考一下

    入门学习Linux常用必会60个命令实例详解doc/txt

    hda1中的“1”代表hda的第一个硬盘分区 (partition),hda2代表hda的第二主分区,第一个逻辑分区从hda5开始,依此类推。此外,可以直接检查 /var/log/messages文件,在该文件中可以找到计算机开机后系统已辨认出来的...

    c程序设计习题参考(谭浩强三版)习题参考解答

    写一个函数,将此字符串中从第m个字符开始的全部字符复制成为另一个字符串。 76 10.6输入一行文字,找出其中大写字母,小写字母,空格,数字及其他字符各有多少。 77 10.7写一个函数,将一个3×3的矩阵转置。 77 9.8...

    Java之IO流学习总结

    InputStreamReader 是一个连接字节流和字符流的桥梁,它将字节流转变为字符流。FileReader 可以说是一个达到此功能、常用的工具类,在其源代码中明显使用了将FileInputStream 转变为Reader 的方法。我们可以从这个类...

    C语言考试题库之判断题.doc

    这是正确的,C语言中的字符串可以使用字符串方式赋值,也可以使用字符逐个赋值,但前者需要多占一个字节来存放字符串完毕标志'\0'。 17. C语言函数返回类型的默认定义类型是void。这是错误的,C语言中的函数返回...

    单片机第五章作业答案.pdf

    在作业答案中,我们还可以看到一个双字节无符号整数乘法子程序的设计,这个子程序将两个双字节无符号整数相乘,积存放于结果单元中。这个子程序需要对单片机的寄存器和指令集进行深入的理解,并且需要掌握双字节无...

    (1) 根据下述情况,分别编写程序,记录 BX 中 1 的个数(需要考虑 BX 中二进制 串的特殊情况),要求如下:  循环次数已知  循环次数未知 (2)

    (1) 根据下述情况,分别编写程序,记录 BX 中 1 的...40H, 57H, 68H)和一个目标值(例如 79H),请判断数组中是否含有两个数的 和为目标值,请设计一个算法,将时间复杂度控制在 O(n),编程实现并验证 你的算法。

    js substr支持中文截取函数代码(中文是双字节)

    代码如下:[removed] //得到字符总数function getChars(str) { var i = 0; var c = 0.0; var unicode = 0; var len = 0; if (str == null || str == “”... 127) { //判断是单字符还是双字符 c += 1; } else { 

    C语言程序设计标准教程

     本程序中用赋值语句给num和name两个成员赋值,name是一个字符串指针变量。用scanf函数动态地输入sex和score成员值,然后把boy1的所有成员的值整体赋予boy2。最后分别输出boy2 的各个成员值。本例表示了结构变量的...

    mysql首字母拼音搜索title

    #判断左端首个字符是多字节还是单字节字符,要是多字节则认为是汉字且作以下拼音获取,要是单字节则不处理。如果是多字节字符但是不在对应的编码范围之内,即对应的不是大写字母则也不做处理,这样数字或者特殊字符...

    计算机基础知识选择题及答案

    ASCII 码是一种单字节编码,每个字符占用一个字节。 4. OFFICE 不属于操作系统。操作系统是指管理计算机硬件资源并提供应用程序运行环境的系统软件,OFFICE 是一个办公软件套件。 5. 具有最佳可移植性的电脑程序...

    modbus通信协议

    如果在帧完成之前有超过1.5个字符时间的停顿时间,接收设备将刷新不完整的消息并假定下一字节是一个新消息的地址域。同样地,如果一个新消息在小于3.5个字符时间内接着前个消息开始,接收的设备将认为它是前一消息的...

    TCHAR 函数

    TCHAR 函数是一组通用的文本处理函数,用于处理单字节字符集(SBCS)、多字节字符集(MBCS)和 Unicode 字符集。这些函数都是通用的,意味着它们可以在不同的字符集上工作,不需要开发者手动地选择正确的字符集函数...

Global site tag (gtag.js) - Google Analytics