我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Java实现UTF-8编码与解码方式

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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后丢失),支持在运行期修改。 

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Java实现UTF-8编码与解码方式

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Java实现UTF-8编码与解码方式

这篇文章主要介绍了Java实现UTF-8编码与解码方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2023-05-15

Java怎么实现UTF-8编码与解码

这篇文章主要介绍了Java怎么实现UTF-8编码与解码的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Java怎么实现UTF-8编码与解码文章都会有所收获,下面我们一起来看看吧。Java实现UTF-8编码与解码J
2023-07-06

网站建设中编码转码工具实现utf-8与gbk转换的方法

这篇文章给大家介绍网站建设中编码转码工具实现utf-8与gbk转换的方法,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。所以最好的方法是直接使用编码转换软件,我用的软件是convertz,貌似这个软件N年前开发出来后就没
2023-06-12

java中GBK转UTF-8乱码的解决方法

java中GBK转UTF-8乱码的解决方法如果自己采用的是GBK编码,对方采用得到是UTF-8编码,发送数据时需要将GBK编码数据转换成UTF-8编码数据,这样对方才不会乱码。问题出现:GBK转UTF-8时,奇数个中文会乱码,偶数个中文不会乱码。原因分析:pu
java中GBK转UTF-8乱码的解决方法
2017-10-15

VBS如何实现GB2312,UTF-8,Unicode,BIG5编码转换工具

这篇文章将为大家详细讲解有关VBS如何实现GB2312,UTF-8,Unicode,BIG5编码转换工具,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。具体代码: 代码如下: *==============
2023-06-08

dedecms utf-8 出现乱码问题的解决方法之一

当制TkMoK作dedecms模板的head.htm时页面显示正常当制作index.htm模板时发现在index.htm输入中文时会出现乱码之前没有遇到过,感觉很编程客栈奇怪,于是在网上搜索了一下相关信息,但遗憾的是没有找到正确的解决办法。
2022-06-12

Java中实现Unicode编码解码的方法

Java提供多种方法对Unicode字符进行编码和解码。编码方式包括:String.getBytes()、String.getBytes(charsetName)、Charset.encode(ByteBuffer)等。解码方式包括:String(byte[]bytes)、String(byte[]bytes,charsetName)、Charset.decode(ByteBuffer)等。选择合适的字符集(如UTF-8、UTF-16LE、UTF-32)至关重要,以确保正确处理Unicode字符。
Java中实现Unicode编码解码的方法
2024-04-02

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录