java 非法字符过滤 , 半角/全角替换

java 非法字符过滤 , 半角/全角替换

package mjorcen.netty.test1;

import java.io.UnsupportedEncodingException;

public class CharByteConverter {

    /**
     * 全角转半角
     *
     * @param str
     * @return
     *
     * @author mjorcen
     * @email [email protected]
     * @dateTime Sep 27, 2014 2:51:50 PM
     * @version 1
     */
    @Deprecated
    public static final String toSingleByte(String str) {
        StringBuffer outStrBuf = new StringBuffer("");

        String Tstr = "";
        byte[] b = null;
        for (int i = 0; i < str.length(); i++) {
            Tstr = str.substring(i, i + 1);
            // 全角空格转换成半角空格
            if (Tstr.equals(" ")) {
                outStrBuf.append(" ");
                continue;
            }
            try {
                b = Tstr.getBytes("unicode");
                // 得到 unicode 字节数据
                if (b[2] == -1) {
                    // 表示全角
                    b[3] = (byte) (b[3] + 32);
                    b[2] = 0;
                    outStrBuf.append(new String(b, "unicode"));
                } else {
                    outStrBuf.append(Tstr);
                }
            } catch (UnsupportedEncodingException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

        } // end for.
        return outStrBuf.toString();

    }

    /**
     * 半角转全角
     *
     * @param str
     * @return
     *
     * @author mjorcen
     * @email [email protected]
     * @dateTime Sep 27, 2014 2:52:06 PM
     * @version 1
     */
    @Deprecated
    public static final String toDoubleByte(String str) {
        StringBuffer outStrBuf = new StringBuffer("");
        String Tstr = "";
        byte[] b = null;
        for (int i = 0; i < str.length(); i++) {
            Tstr = str.substring(i, i + 1);
            if (Tstr.equals(" ")) {
                // 半角空格
                outStrBuf.append(Tstr);
                continue;
            }
            try {
                b = Tstr.getBytes("unicode");
                if (b[2] == 0) {
                    // 半角
                    b[3] = (byte) (b[3] - 32);
                    b[2] = -1;
                    outStrBuf.append(new String(b, "unicode"));
                } else {
                    outStrBuf.append(Tstr);
                }
                return outStrBuf.toString();
            } catch (UnsupportedEncodingException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

        }
        return outStrBuf.toString();
    }

    /**
     * 半角转全角
     *
     * @param str
     * @return
     *
     * @author mjorcen
     * @email [email protected]
     * @dateTime Sep 27, 2014 2:52:31 PM
     * @version 1
     */
    public static String ToSBC(String str) {
        char c[] = str.toCharArray();
        for (int i = 0; i < c.length; i++) {
            if (c[i] == ‘ ‘) {
                c[i] = ‘\u3000‘;
            } else if (c[i] < ‘\177‘) {
                c[i] = (char) (c[i] + 65248);

            }
        }
        return new String(c);
    }

    /**
     * 全角转半角
     *
     * @param str
     * @return
     *
     * @author mjorcen
     * @email [email protected]
     * @dateTime Sep 27, 2014 2:52:50 PM
     * @version 1
     */
    public static String ToDBC(String str) {
        char c[] = str.toCharArray();
        for (int i = 0; i < c.length; i++) {
            if (c[i] == ‘\u3000‘) {
                c[i] = ‘ ‘;
            } else if (c[i] > ‘\uFF00‘ && c[i] < ‘\uFF5F‘) {
                c[i] = (char) (c[i] - 65248);

            }
        }
        String returnString = new String(c);
        return returnString;
    }

    public static void main(String[] args) {
        long l = System.currentTimeMillis();
        for (int i = 0; i < 100000; i++) {
            String str = "814乡道阿斯蒂芬123/.12,412看2家1快2看了就2;看了2叫看来+看来家12考虑就23;了3接口2了2会2,.水电费苦辣时间的2  125123123121209-021~!@#$%^&*()_";
            String result = ToDBC(str);
            ToSBC(result);
        }
        System.out.println(System.currentTimeMillis() - l);
    }

}
时间: 2024-10-13 16:39:38

java 非法字符过滤 , 半角/全角替换的相关文章

c# 判断字符是否是全角, 获取字符串的字节数 , 获取字符串指定长度字节数的字符串

1 Encoding.Default.GetByteCount(checkString);  =2 全角 =1 半角 /// <summary> /// 获取字符串的字节长度 /// </summary> /// <param name="str"></param> /// <returns></returns> public static int GetStringByteLength(this string s

[小技巧] Windows7 半角全角快捷键 修改方法

From : http://blog.sina.com.cn/s/blog_87ab67b10100x3ww.html 转载说明:在浏览器下我们可以使用空格下翻一页,Shift + 空格上翻一页. 但是Shift + 空格在中文输入法被定义为全角/半角转换.但是在输入法里这是被写死了, 通过下面的方法可以将其设成左Alt+shift+F10,这样中文输入法里也可以使用Shift + 空格上翻一页了. Windows7 下 输入法全半角快捷键 默认为 shift+空格. 很容易误按,但用"文本服务

IDEA启动项目报错:Error:(1, 1) java: 非法字符: &#39;\ufeff&#39;

1. 报错信息 IDEA导入支付宝支付测试Demo启动报错,报错信息如下: Error:(1, 1) java: 非法字符: '\ufeff'Error:(1, 10) java: 需要class, interface或enum 经测试,MyEclipse并没有报同样的错误信息. 2. 解决方法 在IDEA右下角将编码改为GBK,再转为UTF-8,可以解决. IDEA启动项目报错:Error:(1, 1) java: 非法字符: '\ufeff' 原文地址:https://www.cnblogs

在获取网页时半角全角字符混合的问题

在获取网页数据时,遇到一个问题.获取的数据在解析成中文时由于字符中包含半角和全角的字符,总是不能全部显示正确.一开始总想有什么解析方法可以用来处理这种数据.网页本身是utf-8格式,按理来说不应该有这个问题.后来发现是Dotnet中WebClient类默认会将中文转成gb2312.此时与原始的utf-8的数据相比,数据已有丢失,所以我判断再怎么恢复也不行(但不确定).那WebClient有该属性配置么?果然!将Encoding属性设为utf-8就从头上解决了这个问题.回想之前在用扫码仪获取二维码

Error:(1, 1) java: 非法字符: ‘\ufeff’

错误原因是 UTF-8 文件开头添加了 BOM,IDEA不能正确读取 .java 文件从而导致程序出错. 常见引起这个错误的是:用Windows记事本打开并修改 .java 文件 修复: Eclipse:可以智能的把UTF-8+BOM文件转为普通的UTF-8文件 IDEA:先转换为GBK,再转回UTF-8 其他编辑器软件同理 原文地址:https://www.cnblogs.com/phpstudy2015-6/p/10976970.html

解决IDEA导入Eclipse项目时,编译报错“ Error:(1, 1) java: 非法字符: ‘\ufeff’”

今天在IDEA中导入了一个Eclipse项目,编译时报错: 原因:Eclipse可以智能地把UTF-8  BOM文件转换为普通的UTF-8文件,IDEA没有这个智能转换. 2种解决方式: 1.在所在目录下新建一个java文件,把原文件的内容剪切过去,删除原文件,再把新文件重命名为原来的文件名. 2.点击IDEA右下角的编码字符集,先换为GBK,再换为UTF-8 原文地址:https://www.cnblogs.com/chy18883701161/p/12590933.html

java 全角字符半角字符转换

[java] view plaincopy /// <summary> /// 判断字符是否英文半角字符或标点 /// </summary> /// <remarks> /// 32    空格 /// 33-47    标点 /// 48-57    0~9 /// 58-64    标点 /// 65-90    A~Z /// 91-96    标点 /// 97-122    a~z /// 123-126  标点 /// </remarks> pu

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

如果搞明白了Java中全角字符和半角字符之间的关系,那他们之间的转换就不是个麻烦事儿.你只需要对这个关系有那么一个印象就足够了. 全角字符与半角字符的关系 通过下面的代码能看到Java中所有字符以及对应编码的值\ public static void main(String[] args) { for (int i = Character.MIN_VALUE; i <= Character.MAX_VALUE; ++i) { System.out.println(i + " "

刨根究底字符编码之五——简体汉字编码方案(GB2312、GBK、GB18030、GB13000)以及全角、半角、CJK

简体汉字编码方案(GB2312.GBK.GB18030.GB13000)以及全角.半角.CJK 一.概述 1. 英文字母再加一些其他标点字符之类的也不会超过256个,用一个字节来表示一个字符就足够了(2^8 = 256).但其他一些文字不止这么多字符,比如中文中的汉字就多达10多万个,一个字节只能表示256个字符,肯定是不够的,因此只能使用多个字节来表示一个字符. 于是当计算机被引入到中国后,相关部门设计了GB系列编码("GB"为"国标"的汉语拼音首字母缩写,即&q