引起乱码的情况很多~实质上 主要是字符串本身的编码格式 与程序所需要的编码格式不一致导致的。要解决乱码其实很简单,

分2步 :

  1:获取到字符串 本身的编码

  2:改变字符串编码 (本身编码 -> 新编码)

话不多说,直接贴代码

package cn.sccl.framework.util;import org.apache.commons.lang3.StringUtils;import java.io.UnsupportedEncodingException;
/*** 字符编码工具类** @author _minus* @create 2017-11-06 18:38*/
public class CharsetUtils {private enum Charset {/** 7位ASCII字符,也叫作ISO646-US、Unicode字符集的基本拉丁块 */US_ASCII("US-ASCII","位ASCII字符,也叫作ISO646-US、Unicode字符集的基本拉丁块 "),ISO_8859_1("ISO-8859-1","ISO 拉丁字母表 No.1,也叫作 ISO-LATIN-1"),UTF_8("UTF-8","8 位 UCS 转换格式"),UTF_16BE("UTF-16BE","16 位 UCS 转换格式,Big Endian(最低地址存放高位字节)字节顺序"),UTF_16LE("UTF_16LE","16 位 UCS 转换格式,Big Endian(最低地址存放高位字节)字节顺序"),UTF_16("UTF_16","16 位 UCS 转换格式,字节顺序由可选的字节顺序标记来标识"),GBK("GBK","中文超大字符集");private String encode;private String desc;public String getEncode() {return encode;}public void setEncode(String encode) {this.encode = encode;}public String getDesc() {return desc;}public void setDesc(String desc) {this.desc = desc;}private Charset(String encode, String desc){this.encode =encode;this.desc = desc ;}}/*** 获取传入字符串的编码格式* @param str* @return*/public static String getEncode(String str) throws UnsupportedEncodingException {if (!StringUtils.isEmpty(str)){for (Charset charset : Charset.values()) {if (str.equals(new String(str.getBytes(charset.getEncode()),charset.getEncode()))){return charset.getEncode();}}}throw new UnsupportedEncodingException("编码库中不存在");}/*** 字符串编码转换的实现方法* @param str  待转换编码的字符串* @param newCharset 目标编码* @return* @throws UnsupportedEncodingException*/public static String changeCharset(String str, String newCharset)throws UnsupportedEncodingException {if (str != null) {//获取到原字符编码String charsetName = getEncode(str);//用默认字符编码解码字符串。byte[] bs = str.getBytes(charsetName);//用新的字符编码生成字符串return new String(bs, newCharset);}return null;}/*** 将字符编码转换成US-ASCII码*/public static String toASCII(String str) throws UnsupportedEncodingException {return changeCharset(str, Charset.US_ASCII.getEncode());}/*** 将字符编码转换成ISO-8859-1码*/public static String toISO_8859_1(String str) throws UnsupportedEncodingException {return changeCharset(str, Charset.ISO_8859_1.getEncode());}/*** 将字符编码转换成UTF-8码*/public static String toUTF_8(String str) throws UnsupportedEncodingException {return changeCharset(str, Charset.UTF_8.getEncode());}/*** 将字符编码转换成UTF-16BE码*/public static String toUTF_16BE(String str) throws UnsupportedEncodingException {return changeCharset(str, Charset.UTF_16BE.getEncode());}/*** 将字符编码转换成UTF-16LE码*/public static String toUTF_16LE(String str) throws UnsupportedEncodingException {return changeCharset(str, Charset.UTF_16LE.getEncode());}/*** 将字符编码转换成UTF-16码*/public static String toUTF_16(String str) throws UnsupportedEncodingException {return changeCharset(str,Charset.UTF_16.getEncode());}/*** 将字符编码转换成GBK码*/public static String toGBK(String str) throws UnsupportedEncodingException {return changeCharset(str, Charset.GBK.getEncode());}}

转载于:https://www.cnblogs.com/hsc13-lxy14/p/7794682.html

实现字符串的编码转换,用以解决字符串乱码问题相关推荐

  1. C#-中的字符串及其编码转换

    C#中的字符串及其编码转换 (转自:http://blog.sina.com.cn/s/blog_498eab7d0100et7j.html) 根据查找的System.Text.Encoding类的属 ...

  2. php截取字符串后编码不对,php截取字符串出现中文乱码问题的解决

    在之前的文章中我们给大家接好了php截取字符串的实现,以及php截取中文字符串的使用,那么我们在截取中文字符串的时候,很多时候都会出现乱码的问题,那么我们今天就给大家介绍php截取字符串出现中文乱码问 ...

  3. java对字符串编码转换_处理字符串编码转换java类详解

    该字符串处理类包括将ISO-8859-1编码的字符串转换成GBK编码 .对输入的字符串进行一次编码转换,防止SQL注入和验证URL地址是否存在的方法. 字符串处理类(编码转化.SQL注入.URL) i ...

  4. 中文字符串的编码转换 UTF-8//GBK

    golang在处理中文时默认的是utf-8编码,当某些情况下遇到GBK编码或需要GBK编码时,就会出现显示乱码的问题. 1. simplifiedchinese golang官方有针对中文编码转换的包 ...

  5. python中对字符串进行编码_Python 中的字符串编码

    对Python字符编码一直没搞明白,今天看<Python参考手册>再次遇到这个问题,重新整理下 Python中字符串字面量用于指定一个字符序列,其定义方法是把文本放入单引号('),双引号( ...

  6. 字符串的编码与构造、字符串格式化、字符串的截取、字符串常用函数、正则表达式

    文章目录 了解ASCII码 UTF-8编码 字符串构造 单引号或双引号构造字符串 单双引号构造字符串的特殊用法 字符串中引号的转义 转义字符 原始字符串 三重引号字符 字符串格式化 %符号格式化字符串 ...

  7. Unicode字符集下CString与char *转换 (解决中文乱码等)(转)

    UniCode 下 CString 转 char* 的方法的文章有很多,但是大部分都是在互相转载,看了那么多资料,仍然没有解决乱码的问题,后来从一个论坛的一条回复里面找到了正确的方法,特此拿出来与大家 ...

  8. 关于\x开头的字符串编码转换中文解决方法

    做爬虫可能经常遇到爬取到的数据存在编码问题,简直让人头疼,比如爬取到的是这样的: 例如: \xe4\xbd\xa0\xe5\xa5\xbd\xe4\xb8\x96\xe7\x95\x8c 中文是: 你 ...

  9. js html转为实体,字符串js编码转换成实体html编码的方法(防范XSS攻击)

    js代码在html页面中转换成实体html编码的方法一: js代码转换成实体html js代码转换成实体html--红 function test(){ alert('测试红') } test(); ...

最新文章

  1. 【面试 多线程】【第九篇】多线程的问题
  2. java8 环境变量设置
  3. CISCO路由器ADSL拨号配置
  4. Latex 傻瓜式入门
  5. 【机器学习入门笔记6:OpenCV像素的读取与写入】20190204
  6. Windows驱动开发学习笔记(一)—— 环境配置第一个驱动程序
  7. Python 增删改查
  8. 检测对抗样本_对抗T恤以逃避ML人检测器
  9. CDH Kerberos 认证下Kafka 消费方式
  10. 从程序员到项目经理(二)
  11. Akamai DNS 全球断网 谷歌等大批网站在线服务宕机
  12. ES6数组的扩展~超详细、超好理解哦
  13. 重置计算机命令行,怎么用系统命令来重置网络设置
  14. 虚拟机桌面图标开机位置错乱的解决方法
  15. 什么是TOC约束理论以及TOC系统业务流程
  16. 对齐函数:ALIGN()
  17. java8的Effectively final
  18. AcWing120 防线
  19. DisparityCost Volume in Stereo
  20. html5网页宠物窝,11款融进家装的宠物窝设计 简直萌翻了!!

热门文章

  1. redhat6.8链路聚合
  2. ASP.NET MVC的ContentResult
  3. 如何删除数据库中的所有用户表(表与表之间有外键关系)
  4. 稳定高效大型系统架构---集群中间件开发
  5. matplotlib color可选
  6. LeetCode-reverse integer复杂度
  7. mysql如何在一个表中插入数据的同时,更新另一个表的数据?
  8. php版本7历史,php的版本发展历史(1995-2020)
  9. bigdecimal取小数部分_小数精度丢失问题分析和解决
  10. 腾讯手游助手android版本,腾讯游戏助手下载-腾讯游戏助手 安卓版v3.3.4.22-PC6安卓网...