java中含中文字符串的编码和解码问题。

java中含中文字符串的编码和解码问题。1、在Java开发中经常被文字乱码的问题困扰。下面全面解释下字符串的编码和解码。如Stringstr=”中国”编码:byte[]bts=str.getBytes(“编码方式”);//常用编码方式gbk、utf-8、gb2312、iso-8859-1等等。解码:Stringb=newString(bts,”解码方式”);//解码方式对应常用编码方式。2

大家好,又见面了,我是你们的朋友全栈君。

1、在Java开发中经常被文字乱码的问题困扰。下面全面解释下字符串的编码和解码。

如 String str = “中国”

编码:byte[] bts = str.getBytes(“编码方式”);//常用编码方式 gbk、utf-8、gb2312、iso-8859-1等等。

解码:String b = new String(bts,”解码方式”);//解码方式对应常用编码方式。

2、常识:正常(正常显示的字符串无乱码)解码后的字符串对象可以用任意方式编码。但解码要正常显示,必须用对应的编码方式解码。(对于中文要保证正常显示必须采用中文编码/解码方式)

如 String str = “中国”;//这个就是正常显示的字符串

以下任意方式(中文)编码/解码———–

String b1 = new String(str.getBytes(“gbk”),”gbk”);

String b2 = new String(str.getBytes(“utf-8″),”utf-8”);

String b3 = new String(str.getBytes(“gb2312″),”gb2312”);

以上三种方式的字符串对象都是采用中文方式编码/解码,所以都会是正常并无乱码。

3、当没采用对应方式解码时(也就是所谓的乱码)怎么转成正常显示而无乱码。

如 String str = “中国”;

String b1 =  new String(str.getBytes(“gbk”),”gbk”);//这里的b1就是采用的gbk的方式解码的 ::::b1不会乱码的

String b2 = new String(b1.getBytes(),”utf-8″);//这里对b1编码后的字节数组重新用utf-8而没有用对应的gbk方式解码。:::::b2将会是乱码的

以下开始将乱码转成正常显示

String b3 = new String(b2.getBytes(“utf-8″),”gbk”)//这里编码方式(utf-8)必须用上述b2的解码方式,而解码方式(gbk)必须用b1的解码方式。因为是b2把正常显示的b1解码成乱码。:::::::b3不会是乱码的。

在实际应用中出现的乱码,都是这个原因造成的,乱码不是不可逆的,上述步骤就是一个逆转的过程。

4常见应用举例。

在web开发中,tomcat对于传输的字符串都是采用iso-8859-1编码/解码方式。而客户端(浏览器端对于中文都是用gbk或utf-8中文编码/解码方式),所以传到后台都会是乱码的。容器一般都是有处理的,所以中文能正常显示和存储。但有些情况也是会出现乱码的,解决方式如下

String b = new String(str.getBytes(“iso-8859-1″,”客户端的编码/解码方式”)//中文解码方式一般用的是utf-8或者gbk。

如:

 String b1 = new String(str.getBytes(“iso-8859-1″,”utf-8”);

转自:http://blog.csdn.net/jianrenxuan/article/details/48208501

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/157119.html原文链接:https://javaforall.net

(0)
上一篇 2022年7月8日 上午6:36
下一篇 2022年7月8日 上午6:36


相关推荐

  • 基于timestamp和nonce的防止重放攻击方案

    基于timestamp和nonce的防止重放攻击方案以前总是通过 timestamp 来防止重放攻击 但是这样并不能保证每次请求都是一次性的 今天看到了一篇文章介绍的通过 nonce Numberusedon 来保证一次有效 感觉两者结合一下 就能达到一个非常好的效果了 重放攻击是计算机世界黑客常用的攻击方式之一 所谓重放攻击就是攻击者发送一个目的主机已接收过的包 来达到欺骗系统的目的 主要用于身份认证过程 首先要明确一个事情 重

    2026年3月16日
    2
  • AI Agent:从概念到实践,解析智能体的未来趋势与挑战 – 指南

    AI Agent:从概念到实践,解析智能体的未来趋势与挑战 – 指南

    2026年3月16日
    2
  • 用python做学生信息管理系统_python管理系统实例

    用python做学生信息管理系统_python管理系统实例Python面向对象版学员管理系统文章目录Python面向对象版学员管理系统目标一.系统需求二.准备程序文件2.1分析2.2创建程序文件三.书写程序3.1student.py3.1.2程序代码3.2managerSystem.py3.2.1定义类3.2.2管理系统框架3.3main.py3.4定义系统功能函数3.4.1添加功能3.4.2删除学员3.4.3修改学员信息3.4.5查询学员信息3.4.6显示所有学员信息3.4.7保存学员信息3.4.8加载学员信息四.总结

    2026年1月31日
    5
  • sap 获取计划订单bapi_PP 常用bapi

    sap 获取计划订单bapi_PP 常用bapiBAPI:在SAP中可以允许使用BAPI访问标准功能,这些接口可以由外部应用程序开发的客户和配套软件的合作伙伴以及其他SAP应用程序使用。定义SAP业务对象类型的API方法,这些对象类型范围内的业务框架,用于基于对象的组件之间的通信。业务对象和他们的BAPI使面向对象是公司在中央信息处理。例如,现有的功能和数据可重复使用,无故障的技术可以实现的互操作性和非SAP组件可以实现。应用程序可以使用BAP…

    2022年7月24日
    28
  • C语言冒泡排序和选择排序_选择排序和冒泡排序哪个快

    C语言冒泡排序和选择排序_选择排序和冒泡排序哪个快实例1 冒泡法排序数组中有N个整数,用冒泡法将它们从小到大(或从大到小)排序。实例解析:排序是非常重要且很常用的一种操作,有冒泡排序、选择排序、插入排序、希尔排序、快速排序、堆排序等多种方法。这里我们先简单介绍前三种排序算法和代码的实现,其余算法将在后续课程《数据结构》中学习到。冒泡法排序是C语言教材中已经介绍过的排序方法,与其他排序方法比较起来,冒泡法效率是最低的,但因其算法

    2022年10月18日
    5
  • 菜鸟教程 python 正则表达式_python正则表达式使用实例

    菜鸟教程 python 正则表达式_python正则表达式使用实例正则表达式正则表达式(RegularExpression,在代码中常简写为regex、regexp、RE或re)是预先定义好的一个“规则字符率”,通过这个“规则字符串”可以匹配、查找和替换那些

    2022年8月7日
    8

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号