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

如果搞明白了Java中全角字符和半角字符之间的关系,那他们之间的转换就不是个麻烦事儿.你只需要对这个关系有那么一个印象就足够了.

全角字符与半角字符的关系

通过下面的代码能看到Java中所有字符以及对应编码的值\

   public static void main(String[] args) {
        for (int i = Character.MIN_VALUE; i <= Character.MAX_VALUE; ++i) {
            System.out.println(i + "    " + (char)i);
        }
    }

从输出可以看到

  1. 半角字符是从33开始到126结束
  2. 与半角字符对应的全角字符是从65281开始到65374结束
  3. 其中半角的空格是32.对应的全角空格是12288

半角和全角的关系很明显,除空格外的字符偏移量是65248(65281-33 = 65248)

Java语言实现全角、半角之间的转换

了解了全半角字符之间的关系,再来看看Java的实现

 /**
      * 全角字符串转换半角字符串
      *
      * @param fullWidthStr
      *            非空的全角字符串
      * @return 半角字符串
      */
     private static String fullWidth2halfWidth(String fullWidthStr) {
         if (null == fullWidthStr || fullWidthStr.length() <= 0) {
             return "";
         }
         char[] charArray = fullWidthStr.toCharArray();
         //对全角字符转换的char数组遍历
         for (int i = 0; i < charArray.length; ++i) {
             int charIntValue = (int) charArray[i];
             //如果符合转换关系,将对应下标之间减掉偏移量65248;如果是空格的话,直接做转换
             if (charIntValue >= 65281 && charIntValue <= 65374) {
                 charArray[i] = (char) (charIntValue - 65248);
             } else if (charIntValue == 12288) {
                 charArray[i] = (char) 32;
             }
         }
         return new String(charArray);
     }
  public static char  fullWidth2halfWidth(char c){
        int charIntValue=(int) c;
        if (charIntValue >= 65281 && charIntValue <= 65374) {
            return (char) (charIntValue - 65248);
        } else if (charIntValue == 12288) {
            return (char) 32;
        }
        return c;
    }

https://www.cnblogs.com/sealedbook/p/3385080.html

标签: Java 全角 半角

原文地址:https://www.cnblogs.com/yuluoxingkong/p/12167061.html

时间: 2024-10-09 22:23:46

java全角、半角字符的关系以及转换的相关文章

判断全角半角字符

依据:全角占用二个字节,半角占用一个字节注意,英文字母,数字和英文标点符号都是半角的,1个字符只占1个字节,中文字符和中文标点符号都是全角的,一个全角字符占2个字节. 用string.length 和System.text.Encoding.Default.GetByteCount其中string.length表示字符串的字符数,System.text.Encoding.Default.GetByteCount表示字符串的字节数.判断半角(是半角则true)如下:if (checkString.

Java 全角字符转半角字符

1.java代码里有时候会遇到代码注入的安全问题,为了防止这种问题,增加了一个过滤功能.主要是过滤全角字符,把url不能识别的全角字符转换成半角字符 1 public class Test { 2 public static void main(String[] args) { 3 String t="■ ■ffac●●△※○○☆№ccc"; 4 System.out.println(t); 5 System.out.println(toSemiangle(t)); 6 } 7 8 /

java 全角、半角字符串转换

转自:http://www.cnblogs.com/modou/articles/2679815.html     加入了空字符串的验证 半角转全角的方法: /** * @Title: ToSBC * @Description: 半角转全角 * @param input String. * @return 全角字符串. * @throws */ public static String ToSBC(String input) { if(!("".equals(input)||input

java全角和半角转换

package test; public class HalfAndFullConverseUtil { /** * ASCII表中可见字符从!开始,偏移位值为33(Decimal) */ private static final char DBC_CHAR_START = 33; // 半角! /** * ASCII表中可见字符到~结束,偏移位值为126(Decimal) */ private static final char DBC_CHAR_END = 126; // 半角~ /** *

python实现全角半角的相互转换

在自然语言处理过程中,全角.半角的的不一致会导致信息抽取不一致,因此需要统一. 转换说明 全角半角转换说明 有规律(不含空格): 全角字符unicode编码从65281~65374 (十六进制 0xFF01 ~ 0xFF5E)半角字符unicode编码从33~126 (十六进制 0x21~ 0x7E) 特例: 空格比较特殊,全角为 12288(0x3000),半角为 32(0x20) 除空格外,全角/半角按unicode编码排序在顺序上是对应的(半角 + 0x7e= 全角),所以可以直接通过用+

php字符串处理之全角半角转换

半角全角的处理是字符串处理的常见问题,本文尝试为大家提供一个思路. 一.概念 全角字符unicode编码从65281~65374 (十六进制 0xFF01 ~ 0xFF5E)半角字符unicode编码从33~126 (十六进制 0x21~ 0x7E)空格比较特殊,全角为 12288(0x3000),半角为 32 (0x20)而且除空格外,全角/半角按unicode编码排序在顺序上是对应的所以可以直接通过用+-法来处理非空格数据,对空格单独处理 二.实现思路 1. 找到目标unicode的字符,可

SQL转换全角/半角函数

/****** SQL转换全角/半角函数 开始******/ CREATE FUNCTION ConvertWordAngle ( @str NVARCHAR(4000), --要转换的字符串 @flag bit --转换标志,0转换成半角,1转换成全角 )RETURNS nvarchar(4000) AS BEGIN DECLARE @pat nvarchar(8),@step int,@i int,@spc int IF @flag=0 SELECT @pat=N'%[!--]%',@ste

SQL 全角半角转换-(摘抄)

/****** SQL转换全角/半角函数 开始******/ CREATE FUNCTION ConvertWordAngle ( @str NVARCHAR(4000), --要转换的字符串 @flag bit --转换标志,0转换成半角,1转换成全角 )RETURNS nvarchar(4000) AS BEGIN DECLARE @pat nvarchar(8),@step int,@i int,@spc int IF @flag=0 SELECT @pat=N'%[!--]%',@ste

C#全角半角转换输出解决方法

Microsoft.VisualBasic 命名空间 Strings 模块 StrConv 函数就具有大写/小写.全角/半角.中文简体/繁体等转换功能,字符串转换应该说是VB.NET的强项,是这样的:VB.NET直接调StrConv函数就行了,C#版的则需要在项目中添加引用Microsoft.VisualBasic.dll, 然后就可以在C#程序中直接使用VB.NET的StrConv函数了. 在C#项目中添加引用Microsoft.VisualBasic.dll, 可以在C#程序中直接使用VB.