日期:2014-05-20  浏览次数:20765 次

如何处理字符当中包含UTF-8编码的中文
原字符串是  "快乐的中国人"
如何转成"快乐的中国人"

------解决方案--------------------
判断一下那些是中文,去除不是的就好了就好了呗,具体什么编码 你去看实际情况 转一下就好了

 public class StringUtilTest
{
 public static boolean isChinese(char c) {  
  
        Character.UnicodeBlock ub = Character.UnicodeBlock.of(c);  
  
        if (ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS  
  
                
------解决方案--------------------
 ub == Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS  
  
                
------解决方案--------------------
 ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A  
  
                
------解决方案--------------------
 ub == Character.UnicodeBlock.GENERAL_PUNCTUATION  
  
                
------解决方案--------------------
 ub == Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION  
  
                
------解决方案--------------------
 ub == Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS) {  
  
            return true;  
  
        }  
  
        return false;  
  
    }  
  
 public static String getChineseFromStr(String strName) {  
  
        char[] ch = strName.toCharArray();  
        String result = "";
        for (int i = 0; i < ch.length; i++) {  
  
            char c = ch[i];  
  
            //如果有一个非中文,则返回错误
            if (isChinese(c) == true) {  
 
                result += c; 
            }  
        } 
        return result;
    }
public static void main(String[] args) 
    {

System.out.println(getChineseFromStr("快&#20048;的中国人"));
}
}


结果输出:快的中国人
------解决方案--------------------
这个是Unicode字符实体引用。不是UTF-8编码
------解决方案--------------------

引用:
这个是Unicode字符实体引用。不是UTF-8编码


楼主参考:

import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class ChangeUnicodeString {
public static void main(String[] args) {
String s = "快&#20048;的中国人";
String resultString = getNewString(s);
System.out.println("original sting is " + s);
System.out.println("after changing it is " + resultString);
}

/**
 * 把含有unicode编码的字符串转成汉字。
 * @param s
 * @return 转换后的字符串。
 */
public static String getNewString(String s) {
//----------------- 定义正则匹配模式。
String regexString = "&#\\d{1,5};";// 代表unicode字符串 的正则表达式。
Pattern pattern = Pattern.compile(regexString);
Matcher matcher = pattern.matcher(s);

List<int[]> list = new ArrayList<int[]>();// 用于保存所有这种字符串的首位位置。
// ----------------- 遍历字符串,确定所有的unicode字串的位置,以整数数组形式放入List里。
while (matcher.find()) {
int[] intPosition = new int[2];// 记录起始及结束位置。
intPosition[0] = matcher.start();
intPosition[1] = matcher.end();
list.add(intPosition);
}
// ----------------- 开始转换
String result = "";// 保村最终结果。
int endP = s.length();
for (int i = list.size() - 1; i >= 0; i--) {// 循环替换所有的unicode 字符串为汉字。