Java判断中文字符串是否乱码

转自CSDN一个博主的文章,感觉很有用,转发收藏一下。

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class ChineseUtill {

	private 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 boolean isMessyCode(String strName) {
		Pattern p = Pattern.compile("\\s*|\t*|\r*|\n*");
		Matcher m = p.matcher(strName);
		String after = m.replaceAll("");
		String temp = after.replaceAll("\\p{P}", "");
		char[] ch = temp.trim().toCharArray();
		float chLength = 0 ;
		float count = 0;
		for (int i = 0; i < ch.length; i++) {
			char c = ch[i];
			if (!Character.isLetterOrDigit(c)) {
				if (!isChinese(c)) {
					count = count + 1;
				}
				chLength++;
			}
		}
		float result = count / chLength ;
		if (result > 0.4) {
			return true;
		} else {
			return false;
		}
	}

	public static String toChinese(String msg){
		if(isMessyCode(msg)){
			try {
				return new String(msg.getBytes("ISO8859-1"), "UTF-8");
			} catch (Exception e) {
			}
		}
		return msg ;
	}
}
时间: 2024-07-31 20:00:45

Java判断中文字符串是否乱码的相关文章

JAVA 写中文字符串到指定文件 中文乱码 问题解决

之前试过下面代码里面的注释掉的 方法,都不行,后来想到了不如指定编码格式试试,果真可以了. String as= “中文字符”; //byte[] b = as.getBytes(); try{ File file=new File("F:test.txt"); if(!json.exists()){ file.createNewFile(); } Writer writer = new OutputStreamWriter(new FileOutputStream(file.getA

Java 判断中文字符

Java判断一个字符串中是否有中文字符有两种方法,但是原理都一样,就是通过Unicode编码来判断,因为中文在Unicode中的编码区间为:0x4e00--0x9fa5 第一种: String chineseStr = "中华人民公社abc"; char[] charArray = chineseStr.toCharArray(); for(int i=0;i<charArray.length;i++){ if ((charArray[i] >= 0x4e00)&&

SpringMVC Ajax请求时返回json中文字符串的乱码问题的解决方案

1.org.springframework.http.converter.StringHttpMessageConverter类是处理请求或相应字符串的类,并且默认字符集为ISO-8859-1,所以在当返回json中有中文时会出现乱码. 2.StringHttpMessageConverter的父类里有个List<MediaType> supportedMediaTypes属性,用来存放StringHttpMessageConverter支持需特殊处理的MediaType类型,如果需处理的Me

java 判断String字符串是不是json数据

java 判断String字符串是不是json数据 CreationTime--2018年8月24日18点23分 Author:Marydon JSONObject jo = null; try { jo = JSONObject.fromObject(content); } catch (Exception e) { throw new RuntimeException("不是json格式数据:" + jo); } 相关推荐: 类似文章 原文地址:https://www.cnblog

Java判断一个字符串是否是包含某个字符

Java判断一个字符串是否是包含某个字符 在java中我们经常要判断一个字符串是否被包含在另外一个字符集中,那么如何用代码实现这个功能需求呢? contains方法 该方法返回true,如果此字符串包含,否则返回false. public class containString { public static void main(String[] args) { String str1 = "sdfsfsfa2we"; String str2 = "we"; Sys

java 判断一个字符串中的数字:是否为数字、是否包含数字、截取数字

题外话: JavaScript中判断一个字符是否为数字,用函数:isDigit(); 一.判断一个字符串是否都为数字 package com.cmc.util; import java.util.regex.Matcher; import java.util.regex.Pattern; public class DigitUtil { public static void main(String[] args) { String str="123d"; System.out.prin

Java实现中文字符串的排序功能

1 package test; 2 3 /** 4 * 5 * @Title 书的信息类 6 * @author LR 7 * @version 1.0 8 * @since 2016-04-21 9 */ 10 11 public class Book { 12 13 private String book_id; 14 15 private String book_name; 16 17 private String publishing_house; 18 19 public Book(S

Java判断中文及中文字符转unicode

1.java中判断字符是否为中文 /** * 判断是否为中文字符 * @param c * @return */ public boolean isChinese(char c) { Character.UnicodeBlock ub = Character.UnicodeBlock.of(c); if (ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS || ub == Character.UnicodeBlock.CJK_COMPATIB

SQL Server 插入含有中文字符串出现乱码现象的解决办法

ELECT  COLLATIONPROPERTY('Chinese_PRC_Stroke_CI_AI_KS_WS', 'CodePage')       --查询SQLServer编码格式的语句 下面是查询结果对照: 936 简体中文GBK 950 繁体中文BIG5 437 美国/加拿大英语 932 日文 949 韩文 866 俄文 65001 unicode UFT-8 插入一条带中文字符串的数据, 我们可以通过修改数据库的Collation 来修改数据库的编码方式: 点击确定就可以啦! 我们