平凡也就两个字: 懒和惰;
成功也就两个字: 苦和勤;
优秀也就两个字: 你和我。
跟着我从0学习JAVA、spring全家桶和linux运维等知识,带你从懵懂少年走向人生巅峰,迎娶白富美!
关注微信公众号【 IT特靠谱 】,每天都会分享技术心得~

Java实现全角和半角字符相互转换

1 中文全角和半角输入的区别

在计算机屏幕上,一个汉字要占两个英文字符的位置,人们把一个英文字符所占的位置称为”半角”,相对地把一个汉字所占的位置称为”全角”。

2 什么是半角和全角?

2.1 全角

指一个字符占用两个标准字符位置。

全角指一个字符占用两个标准字符位置的状态。汉字字符和规定了全角的英文字符及国标GB2312-80中的图形符号和特殊字符都是全角字符。全角状态下字母、数字、符号和汉字都会占两个字节的位置,也就是一个汉字那么宽。

2.2 半角

指一字符占用一个标准的字符位置。

是指英文ASCII码中的各种符号。半角的显示内码都是一个字节。半角状态下字母、数字和符号一般会占一个字节,也就是半个汉字的位置;汉字占2个字节,汉汉字属于全角。

3 全角和半角字符对应表

1)半角字符(除空格外)是从33(0x21)开始到126(0x7E)结束;
      2)与半角字符对应的全角字符是从65281(unicode编码的0xFF01)开始到65374(unicode编码的0xFF3E)结束;
      3)其中半角的空格是32(0x20).对应的全角空格是12288(unicode编码的0x3000);
      4)半角和全角的关系很明显,除空格外的字符偏移量都是是65248(65281-33 = 65248)

全角和半角字符对应表如下:

全角和半角字符对应表
ASCII 全角字符 Unicode 半角字符
0x20 " "空格 U+3000 " "空格
0x21 U+ff01 !
0x22 " U+ff02 "
0x23 # U+ff03 #
0x24 $ U+ff04 $
0x25 % U+ff05 %
0x26 & U+ff06 &
0x27 ' U+ff07 '
0x28 U+ff08 (
0x29 U+ff09 )
0x2a * U+ff0a *
0x2b + U+ff0b +
0x2c U+ff0c ,
0x2d U+ff0d -
0x2e U+ff0e .
0x2f / U+ff0f /
0x30 0 U+ff10 0
0x31 1 U+ff11 1
0x32 2 U+ff12 2
0x33 3 U+ff13 3
0x34 4 U+ff14 4
0x35 5 U+ff15 5
0x36 6 U+ff16 6
0x37 7 U+ff17 7
0x38 8 U+ff18 8
0x39 9 U+ff19 9
0x3a U+ff1a :
0x3b U+ff1b ;
0x3c < U+ff1c <
0x3d = U+ff1d =
0x3e > U+ff1e >
0x3f U+ff1f ?
0x40 @ U+ff20 @
0x41 A U+ff21 A
0x42 B U+ff22 B
0x43 C U+ff23 C
0x44 D U+ff24 D
0x45 E U+ff25 E
0x46 F U+ff26 F
0x47 G U+ff27 G
0x48 H U+ff28 H
0x49 I U+ff29 I
0x4a J U+ff2a J
0x4b K U+ff2b K
0x4c L U+ff2c L
0x4d M U+ff2d M
0x4e N U+ff2e N
0x4f O U+ff2f O
0x50 P U+ff30 P
0x51 Q U+ff31 Q
0x52 R U+ff32 R
0x53 S U+ff33 S
0x54 T U+ff34 T
0x55 U U+ff35 U
0x56 V U+ff36 V
0x57 W U+ff37 W
0x58 X U+ff38 X
0x59 Y U+ff39 Y
0x5a Z U+ff3a Z
0x5b [ U+ff3b [
0x5c \ U+ff3c \
0x5d ] U+ff3d ]
0x5e ^ U+ff3e ^
0x5f _ U+ff3f _
0x60 ` U+ff40 `
0x61 a U+ff41 a
0x62 b U+ff42 b
0x63 c U+ff43 c
0x64 d U+ff44 d
0x65 e U+ff45 e
0x66 f U+ff46 f
0x67 g U+ff47 g
0x68 h U+ff48 h
0x69 i U+ff49 i
0x6a j U+ff4a j
0x6b k U+ff4b k
0x6c l U+ff4c l
0x6d m U+ff4d m
0x6e n U+ff4e n
0x6f o U+ff4f o
0x70 p U+ff50 p
0x71 q U+ff51 q
0x72 r U+ff52 r
0x73 s U+ff53 s
0x74 t U+ff54 t
0x75 u U+ff55 u
0x76 v U+ff56 v
0x77 w U+ff57 w
0x78 x U+ff58 x
0x79 y U+ff59 y
0x7a z U+ff5a z
0x7b { U+ff5b {
0x7c | U+ff5c |
0x7d } U+ff5d }
0x7e U+ff5e ~

4 半角和全角字符转换

4.1 打印出java中所有Unicode编码的字符

  /*** 打印出java中所有Unicode编码的字符*/private static void printAllCharacter() {for (int i = Character.MIN_VALUE; i <= Character.MAX_VALUE; ++i) {System.out.println(i + "   " + (char) i);}}

4.2 java转换半角--->全角

半角转全角java实现:

  /*** 半角转全角的函数(SBC case) * 全角空格为12288,半角空格为32,其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248** @param input 任意字符串* @return 全角字符串*/public static String toSbc(String input) {if (StringUtils.isBlank(input)) {return "";}char[] c = input.toCharArray();for (int i = 0; i < c.length; i++) {if (c[i] == 32) {c[i] = (char) 12288;continue;}if (c[i] < 127) {c[i] = (char) (c[i] + 65248);}}return new String(c);}

4.3 java转换全角--->半角

全角转半角java实现:

/*** 全角转半角的函数(DBC case)* 全角空格为12288,半角空格为32 其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248** @param input 任意字符串* @return 半角字符串*/public static String toDbc(String input) {if (StringUtils.isBlank(input)) {return "";}char[] c = input.toCharArray();for (int i = 0; i < c.length; i++) {if (c[i] == 12288) {c[i] = (char) 32;continue;}if (c[i] > 65280 && c[i] < 65375) {c[i] = (char) (c[i] - 65248);}}return new String(c);}

5 测试

5.1 main测试方法

  public static void main(String[] args) {String str = "半角符号示例:,!~    全角符号示例:,!~";System.out.println("半角--->全角转换前:" + str);String sbcResult = toSbc(str);System.out.println("半角--->全角转换后:" + sbcResult);System.out.println("全角--->半角转换前:" + str);String dbcResult = toDbc(str);System.out.println("全角--->半角转换后:" + dbcResult);//打印出java所有字符
//    printAllCharacter();}

5.2 测试结果

Tips:如果不想对数字和大小写字母进行全角转换。那么代码里面不要处理就行了!加个if语句判断下~

6 全部代码

import org.apache.commons.lang3.StringUtils;public class Main {public static void main(String[] args) {String str = "半角符号示例:,!~    全角符号示例:,!~";System.out.println("半角--->全角转换前:" + str);String sbcResult = toSbc(str);System.out.println("半角--->全角转换后:" + sbcResult);System.out.println("全角--->半角转换前:" + str);String dbcResult = toDbc(str);System.out.println("全角--->半角转换后:" + dbcResult);//打印出java所有字符
//    printAllCharacter();}/*** 半角转全角的函数(SBC case) * 全角空格为12288,半角空格为32,其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248** @param input 任意字符串* @return 全角字符串*/public static String toSbc(String input) {if (StringUtils.isBlank(input)) {return "";}char[] c = input.toCharArray();for (int i = 0; i < c.length; i++) {if (c[i] == 32) {c[i] = (char) 12288;continue;}if (c[i] < 127) {c[i] = (char) (c[i] + 65248);}}return new String(c);}/*** 全角转半角的函数(DBC case) * 全角空格为12288,半角空格为32 其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248** @param input 任意字符串* @return 半角字符串*/public static String toDbc(String input) {if (StringUtils.isBlank(input)) {return "";}char[] c = input.toCharArray();for (int i = 0; i < c.length; i++) {if (c[i] == 12288) {c[i] = (char) 32;continue;}if (c[i] > 65280 && c[i] < 65375) {c[i] = (char) (c[i] - 65248);}}return new String(c);}/*** 打印出java中所有Unicode编码的字符*/private static void printAllCharacter() {for (int i = Character.MIN_VALUE; i <= Character.MAX_VALUE; ++i) {System.out.println(i + "   " + (char) i);}}
}

关注微信公众号,免费获取java及其相关视频教程~

Java实现全角和半角字符相互转换相关推荐

  1. java实现全角和半角之间的转换

    java实现全角和半角之间的转换 需求背景 代码实现 需求背景 最近网站引入了一些日文的资料,发现日文提供的资料是阿拉伯数字和一些字符竟然是全角,全角字符我们想要读取里面的信息会变得比较被动,所以要求 ...

  2. Java全角、半角字符的关系以及转换

    如果搞明白了Java中全角字符和半角字符之间的关系,那他们之间的转换就不是个麻烦事儿.你只需要对这个关系有那么一个印象就足够了. 全角字符与半角字符的关系 通过下面的代码能看到Java中所有字符以及对 ...

  3. java 全角_Java全角、半角字符的关系以及转换

    如果搞明白了Java中全角字符和半角字符之间的关系,那他们之间的转换就不是个麻烦事儿.你只需要对这个关系有那么一个印象就足够了. 全角字符与半角字符的关系 通过下面的代码能看到Java中所有字符以及对 ...

  4. java全角数字_Java全角、半角字符的关系以及转换

    如果搞明白了Java中全角字符和半角字符之间的关系,那他们之间的转换就不是个麻烦事儿.你只需要对这个关系有那么一个印象就足够了. 全角字符与半角字符的关系 通过下面的代码能看到Java中所有字符以及对 ...

  5. java 全角_java全角、半角字符的关系以及转换详解

    如果搞明白了Java中全角字符和半角字符之间的关系 那他们之间的转换根本就不是个事. 全角字符与半角字符的关系 可以通过下面的程序看看Java中所有字符以及对应编码的值 public static v ...

  6. Java 全角与半角字符的转换

    1.什么是全角和半角? -- 百度百科 1)全角(Full-width):是一种电脑字符,是指一个全角字符占用两个标准字符(或两个半角字符)的位置.全角占两个字节(16位). 汉字字符和规定了全角的英 ...

  7. java 日文全角转半角_java中全角转换为半角的方法

    在获取文本的时候,经常遇到数据格式的问题,需要判断或转换. 本文旨在解决全角符号转换为半角符号的问题. 网上大体有两种方法:转换编码或者替换. 我使用的是转换编码,引用自:http://blog.cs ...

  8. SQL Server中全角和半角字符的比较问题

    /*------------------------------------------------------------------------------------ /*欢迎转载,请保留本声明 ...

  9. java 替换全角为半角 半角转全角

    /*** 替换全角为半角** @param text 文本* @param notConvertSet 不替换的字符集合* @return 替换后的字符*/public static String t ...

最新文章

  1. mysql题目(二学年)
  2. Unable to compile class for JSP的解决方法
  3. 浅谈a标签属性href的mailto更多用法
  4. phoengap–node+websocket在线聊天室
  5. MyEclipse 7.0 用java代码生成序列号
  6. django会话跟踪技术
  7. 多数人只有一种工资收入,想赚更多钱,只有去做副业
  8. android 两个视频合并,手机如何合并视频片段 安卓手机多个视频合并成一个的方法...
  9. App后台开发(学习笔记)
  10. Python基础入门知识(1)
  11. 百度关闭快照删除更新入口
  12. 一个基于 Dubbo 的微服务改造实践
  13. Tcl/Tk string详解
  14. 如何制作自己的网页java_怎样制作自己的购物网站页面?
  15. java里patch什么意思,patch是什么意思
  16. python爬虫教程:爬取酷狗音乐,零基础小白也能爬取哦
  17. net framework 4 0如何安装 安装失败怎么办
  18. xp如何在桌面显示计算机,WinXP系统如何设置一台电脑两个显示器?
  19. C语言课程设计——家庭财务管理系统源码
  20. 17岁小哥,买不到回国机票攻击航司系统至瘫痪,获刑四年!自称女朋友怀孕压力大,...

热门文章

  1. 【Shiro原理一】shiro:hasPermission 隐藏页面无权访问的资源
  2. 源码解析——FilterChain是职责链(过滤器)模式的典型应用
  3. java14寸折叠自行,14寸外三速小折叠半年使用感受
  4. 蓝牙耳机什么牌子的好又实惠?实惠好用的蓝牙耳机品牌
  5. 获取计算机进程的基址,Python - 如何获取进程的起始/基址?
  6. 通达OA工作流数据报表二次开发版
  7. 天津网通dns 服务器解析问题
  8. 华为云桌面每台服务器应发布虚拟机台数计算
  9. 设置Linux core file生成路径
  10. fastjson所需的依赖_Fastjson使用教程