Java实现UTF-8编码与解码方式
Java实现UTF-8编码与解码
Java代码如下:
import java.net.URLDecoder;
import java.net.URLEncoder;
//URLDecoder.decode("%E5%A4%A9%E6%B4%A5","UTF-8");
public class URLDecoderTesT {
public static void main(String[] args) throws Exception {
// 将application/x-www-form-urlencoded字符串转换成普通字符串
// 其中的字符串直接从上图所示窗口复制过来,chrome 默认用 UTF-8 字符集进行编码,所以也应该用对应的字符集解码
System.out.println("采用UTF-8字符集进行解码:");
String keyWord = URLDecoder.decode("%E9%99%88", "UTF-8");
System.out.println(keyWord);
// System.out.println("\n 采用GBK字符集进行解码:");
// System.out.println(URLDecoder.decode("%E5%A4%A9%E6%B4%A5%E5%A4%A7%E5%AD%A6+Rico", "GBK"));
//
// // 将普通字符串转换成application/x-www-form-urlencoded字符串
System.out.println("\n 采用utf-8字符集:");
String urlStr = URLEncoder.encode("../../../../../../../etc/passwd", "utf-8");
System.out.println(urlStr);
// System.out.println("\n 采用GBK字符集:");
// String urlStr2 = URLEncoder.encode("天津大学", "GBK");
// System.out.println(urlStr2);
}
}推荐一个好的在线转换网页:https://www.bejson.com/enc/urlencode/

使用UTF-8或GBK编码后还是乱码的问题
大家在开发中可能经常遇到将String字符串转为byte[]的场景,为了避免中文乱码,一般指定字符集为GBK或UTF-8来进行编码以及解码,但是如果使用不当,同样会造成字符集乱码问题。
主要原因是进行编码以及解码的字符集不一致导致
所以,在解决字符集乱码问题时一般情况下会显示指定编码和解码字符集。
// 编码 byte[] bytes = “中文”.getBytes(“UTF-8”); // 解码 new String(bytes,“UTF-8”);
不显式指定时一般会使用默认字符集进行编码或解码,此时需要确保使用的获取默认字符集的方法一样。
// 编码 获取默认字符集方法为:Charset.defaultCharset().name() byte[] bytes =“中文”.getBytes(); // 解码 获取默认字符集方法为:Charset.defaultCharset().name() new String(bytes);
以下列出两种获取默认字符集的方法及区别:
Charset.defaultCharset().name();
System.getProperty("file.encoding")两者的区别是
**Charset.defaultCharset()**通过在JVM启动时通过-Dfile.encoding=UTF-8参数来进行设置。此方式只支持在jvm启动时设置一次,不支持在运行期修改。
System.getProperty(“file.encoding”) 获取的是操作系统的编码,可以通过System.setProperty("file.encoding","UTF-8")进行修改(此修改不会影响操作系统,重启jvm后丢失),支持在运行期修改。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
Java Servlet响应httpServletResponse过程详解
HttpServletResponse是处理http响应的对象,调用该对象的方法,设置到对象属性的内容,tomcat最终会组织为http响应报文2022-02-02
jvm之java类加载机制和类加载器(ClassLoader)的用法
这篇文章主要介绍了jvm之java类加载机制和类加载器(ClassLoader)的用法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2020-09-09
使用SpringBoot+Prometheus+Grafana实现可视化监控
本文主要给大家介绍了如何使用Spring actuator+监控组件prometheus+数据可视化组件grafana来实现对Spring Boot应用的可视化监控,文中有详细的代码供大家参考,具有一定的参考价值,需要的朋友可以参考下2024-02-02
SpringBoot实现application.yml文件敏感信息加密
本文主要介绍了SpringBoot实现application.yml文件敏感信息加密,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2023-07-07
java后端+前端使用WebSocket实现消息推送的详细流程
后端向前端推送消息就需要长连接,首先想到的就是websocket,下面这篇文章主要给大家介绍了关于java后端+前端使用WebSocket实现消息推送的详细流程,需要的朋友可以参考下2022-10-10


最新评论