java byte转中文乱码_java byte转string 涉及到字节流中有中文[通俗易懂]

java byte转中文乱码_java byte转string 涉及到字节流中有中文[通俗易懂]最近遇到一个问题,我用java写了一个客户端通过socket向服务器端发送消息,发送的内容是字节流,编码格式是GBK,服务器在收到消息后,如果格式正确,会返回固定的消息格式,同样也是字节流,编码格式也是GBK。现在问题来了,我怎么把字节流转换为字符流,当然是要能显示出中文。于是上网搜了一下,找到一篇博客,网址如下:http://bbs.csdn.net/topics/391939108,代码如下:…

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

最近遇到一个问题,我用java写了一个客户端通过socket向服务器端发送消息,发送的内容是字节流,编码格式是GBK,服务器在收到消息后,如果格式正确,会返回固定的消息格式,同样也是字节流,编码格式也是GBK。

现在问题来了,我怎么把字节流转换为字符流,当然是要能显示出中文。于是上网搜了一下,找到一篇博客,网址如下:http://bbs.csdn.net/topics/391939108,代码如下:

import java.nio.charset.Charset;

import java.nio.ByteBuffer;

import java.nio.CharBuffer;

public class Test{

public static void main(String[] args){

String content = “Hello World.你好世界.”;

byte[] bs = content.getBytes();

Charset charset = Charset.defaultCharset();

ByteBuffer buf = ByteBuffer.wrap(bs);

CharBuffer cBuf = charset.decode(buf);

System.out.println(cBuf.toString());

}

}

从代码不难看出,主要是通过ByteBuffer和CharBuffer相互转换,转换之前需要设置字符的编码格式,因为我是在中文Windows下开发,所以默认的编码格式是GBK,如果你想要设置自己的编码格式,可以调用Charset的forName函数,参数即编码格式。

这里还有一个细节需要注意,即从字节到字符转换时,不难想象当读取到一个byte小于128时候,直接转英文。当大于128时,因为是GBK编码,所以需要两个连续的字节。

java中编码格式相互转换,还是比较麻烦的,我到现在也不是很清楚,只能遇到问题一点点解决。

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 2020idea安装教程_3dmax2020安装失败

    2020idea安装教程_3dmax2020安装失败IDEA安装教程1、下载IDEA首先在官网下载IDEA,官网下载地址为:IDEA下载地址我这里选择的是Ultimate版本2、安装IDEA双击刚才下载好的IDEA安装包进行安装。我把安装路径改为了我在D盘选择的路径点击Next,然后点击Install进行安装安装过程安装成功3、IDEA配置启动IDEA此时需要激活,我之前申请的教育账号还可以用就直接使用的教育账…

    2022年9月28日
    2
  • React图片懒加载

    React图片懒加载话不多说了,创建一个LazyLoad.js的React组件,然后将下面的代码复制过去:importReactfrom’react’//import’./lazyload.css’//thresholdconstthreshold=[0.01]classLazyLoadextendsReact.Component{construc…

    2022年4月6日
    32
  • 信号处理中包络是什么意思_重庆邮电大学复试通信原理

    信号处理中包络是什么意思_重庆邮电大学复试通信原理第一章绪论1.基带信号的定义基带信号是指信号的频谱从零频附近开始的,没有经过调制的信号2.什么是数字信号和模拟信号?二者的区别是什么?数字信号是信号参量的取值是离散的,模拟信号是信号参量的取值是连续的。区别是信号参量的取值是连续还是离散。3.什么是数字通信?描述数字通信系统的主要优缺点?数字通信就是用数字信号传输信息的通信系统。数字通信系统的优点有差错可控,抗干扰能力强,易于存储,处理和…

    2022年8月10日
    7
  • java后台发起上传文件的post请求(http和https)

    一、httppost对于文件上传,客户端通常就是页面,在页面里实现上传文件不是什么难事,写个form,加上enctype=”multipart/form-data”,在写个接收的就可以了,没什么难的。如:<!DOCTYPEhtml> <html> <head> <title>HelloWorld!</titl…

    2022年4月6日
    55
  • StretchDIBits函数

    StretchDIBits函数引用:http://blog.csdn.net/giantchen547792075/article/details/6996011The StretchDIBits functioncopiesthecolordataforarectangleofpixelsinaDIB,JPEG,orPNGimagetothespecifieddestination

    2022年6月15日
    25
  • 利用Python制作微信机器人(一)

    利用Python制作微信机器人(一)双十一时候,阿里云服务器打折。于是直接买了三年的阿里云服务器。自己也明白有一个云服务器说白了就是有一个公网IP+7*24h不关机的电脑。但买完服务器后,就不知道用这服务器来做点什么炫酷的事情了。这两天看到有某位海王做了个自动回复消息的机器人来给女朋友们回消息,是否可以用这个服务器来做一个自动回复消息的机器人。…

    2022年6月23日
    26

发表回复

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

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