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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • MVC与三层架构理解

    MVC与三层架构理解1.JSP的发展2.MVC思想优缺点3.三层架构为什么使用三层三层优缺点4.MVC与三层架构的区别

    2022年6月25日
  • word页数域代码

    word页数域代码针对MicrosoftWord使用alt+F9显示域代码,使用ctrl+F9插入域代码,注意:必须用ctrl+F9插入域代码,自己打括号无效第{page}页/总{numpages}页//本文档所有页数第{page}页/总{sectionpages}页//当前节所有页数…

    2022年6月9日
  • 垃圾邮件分类实战(SVM)

    1.数据集说明trec06c是一个公开的垃圾邮件语料库,由国际文本检索会议提供,分为英文数据集(trec06p)和中文数据集(trec06c),其中所含的邮件均来源于真实邮件保留了邮件的原有格式和

    2021年12月30日
  • 360天擎卸载方法[通俗易懂]

    360天擎卸载方法[通俗易懂]具体方法如下:1、先找到360天擎软件的安装文件夹,通常是:C:\ProgramFiles(x86)\360\360Safe\EntClient\conf2、先下载我们使有记事本打开目录下的EntBase.dat文件[base]persistent_connetion=closeshow_tip=1net_env=1communication_interval=900[api_frequency]checkupdate=180get_client_tasks=180getconf=

    2022年9月25日
  • 20款优秀的免费代码编辑器

    20款优秀的免费代码编辑器Atom.io(Win7、Win8、OSX10.8、Linux)免费GitHub开发的文本编辑器Atom发布了0.177.0版,其中一个引入注目的变化是从Node.js切换到了io.js。io.js是Node.js的分支,Node.js社区发生分裂后由核心开发者在2014年12月创建的,已经发布了v1.1版,目前开发非常活跃。Atom是切换到io.js的一个重量级项目。At

    2022年6月15日
  • 使用electron+vue开发一个跨平台todolist(便签)桌面应用

    使用electron+vue开发一个跨平台todolist(便签)桌面应用

    2020年11月20日

发表回复

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

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