项目场景:

JAVA 使用NETTY框架建立socket数据通讯


问题描述:

服务端将定义好的字符串,转HEX值,回复到客户端,客户端将字符串转码解析后中文乱码

String strTo16 = HexUtils.strTo16(json.toString());public static String strTo16(String s) {String str = "";for (int i = 0; i < s.length(); i++) {int ch = (int) s.charAt(i);String s4 = Integer.toHexString(ch);str = str + s4;}return str;}

服务端回复

ByteBuf resp = Unpooled.copiedBuffer(HexUtils.HexString2Buf(strTo16 ));
ChannelFuture writeAndFlush = ctx.writeAndFlush(resp);

HexString2Buf 方法

public static byte[] HexString2Buf(String src) {int len = src.length();byte[] ret = new byte[len / 2];byte[] tmp;try {tmp = src.getBytes("UTF-8");for (int i = 0; i < len; i += 2) {ret[i / 2] = uniteBytes(tmp[i], tmp[i + 1]);}} catch (UnsupportedEncodingException e) {e.printStackTrace();}return ret;}
public static byte uniteBytes(byte src0, byte src1) {try {byte _b0 = Byte.decode("0x" + new String(new byte[] { src0 }, "UTF-8")).byteValue();_b0 = (byte) (_b0 << 4);byte _b1;_b1 = Byte.decode("0x" + new String(new byte[] { src1 }, "UTF-8")).byteValue();byte ret = (byte) (_b0 ^ _b1);return ret;} catch (Exception e) {return 0;}}

原因分析:

一直以为HexString2Buf 转 byte[]时 编码原因,所以tmp = src.getBytes(“UTF-8”);设置为UTF-8编码,但是不起作用,结果还是乱码


解决方案:

后来觉的是不是字符串转HEX值时没有定义编码的原因,所以将String转HEX方法修改为:

strTo16 = HexUtils.bytesToHexString(json.toString().getBytes("UTF-8"));public static String bytesToHexString(byte... src) {StringBuilder stringBuilder = new StringBuilder();if (src == null || src.length <= 0) {return null;}for (int i = 0; i < src.length; i++) {int v = src[i] & 0xFF;String hv = Integer.toHexString(v);if (hv.length() < 2) {stringBuilder.append(0);}stringBuilder.append(hv);}return stringBuilder.toString();}

调试代码,果然成功了

记:Nett发送HEX值,转码后中文乱码问题相关推荐

  1. activiti 部署流程图后中文乱码

    Activiti工作流引擎使用 1.简单介工作流引擎与Activiti 对于工作流引擎的解释请参考百度百科:工作流引擎 1.1 我与工作流引擎 在第一家公司工作的时候主要任务就是开发OA系统,当然基本 ...

  2. 在一个JS文件中包含中文字符串,通过innerHTML输出后中文乱码?

    在一个JS文件中包含中文字符串,通过innerHTML输出后中文乱码? Posted on 2008-07-13 12:00 尹合磊 阅读(1902) 评论(0)  编辑 收藏 所属分类: ASP.N ...

  3. Java的HttpClient类以POST方式提交数据,目标端收到后中文乱码

     h ttpClient HttpMethod NameValuePair setRequestBody 今天开发时,遇到利用Java中HttpClient类以POST方式提交数据,目标收到后中文 ...

  4. 解决 IntelliJ IDEA 中 .propertise 文件保存后中文乱码

    解决 IntelliJ IDEA 中 .propertise 文件保存后中文乱码 运行环境: IntelliJ IDEA 2021.3 (Ultimate Edition)   在 IntelliJ ...

  5. CSV文件导入数据库后中文乱码

    CSV文件导入数据库后中文乱码 背景:我用的是Dbeaver连接的clickhouse数据库,向现场的同事要了数据(CSV格式文件),导入后都是途中这样的,根本用不了.在网上找到同样的情况的文章,记录 ...

  6. MATLAB去读网页源码时中文乱码

    MATLAB去读网页源码时中文乱码 防止获取的网页源码中文乱码 %设置网页的编码方式(必须首先知道网页的编码方式) options = weboptions('CharacterEncoding',' ...

  7. 解决Debian安装后中文乱码

    最近在VMbox安装了Debian7.10,选择中文安装,安装后出现乱码: 解决方法如下: 首先进入系统,打开终端(注意,终端因为乱码的原因不好找到) su   切换到超级用户权限 编辑locale文 ...

  8. Eclipse导入项目后中文乱码

    在Eclipse中导入项目后出现中文乱码. 原因是导入的项目的编码方式与Eclipse中设置的编码方式不同. 1.去修改Workspace的编码方式 打开Eclipse--Window--Prefer ...

  9. vue项目打包部署后中文乱码

    web项目 项目框架:springmvc + vue vue项目本地调试OK,npm run build后,放到springmvc项目的webinfo目录后,再次访问,出现中文乱码情况. 解决办法: ...

最新文章

  1. 万字长文,一文搞懂TCP/IP和HTTP、HTTPS
  2. 本地win7ping VM linux ipv6地址问题
  3. WINDOWS基础 ---- 系统目录
  4. c++ using 前置声明_C++ 类声明 类前置声明范例
  5. 错误 error C2220: 警告被视为错误 - 没有生成“object”文件
  6. 模块pdf2image.dll加载失败_Webpack 原理从前端模块化开始
  7. 第0周作业2:博客阅读和思考
  8. 小程序 | 微信小程序实现图片是上传、预览功能
  9. 【数字信号处理】划重点
  10. 数字小人时钟windows电脑屏幕保护
  11. 信号与频谱之正弦信号和复信号
  12. c语言实现mysql通配符_Mysql的C语言接口简单实现电话本功能
  13. session Asii码转换
  14. 养乐多深耕三线城市加码长、珠三角;欧康维视在港交所主板挂牌上市 | 美通企业日报...
  15. 超市管理系统-2(数据库代码以及数据库逻辑)
  16. Nodejs xlsx导出导出
  17. 程序员需要学习英语吗?
  18. JAVA潜心修炼五天——第2天
  19. linux的shell命令的工作方式,工作中给力的shell命令
  20. Python中的tuple

热门文章

  1. 12_OSR模块和空间参考系
  2. 【云原生】Kubernetes CRD 详解(Custom Resource Definition)
  3. 一个著名的任务调度系统是怎么设计的?(转自码农翻身)
  4. Yagmail | 命令行发送电子邮件竟变得如此容易……
  5. MySQL系统库之mysql
  6. 计算机二战一个双非学校怎样,双非二战学长成功调剂985:看他的调剂院校选择!...
  7. 全球神秘失踪--多维世界或时空扭曲解谜
  8. 没有伪装和欺骗才能活在当下
  9. LiDAR 5 相控阵激光雷达 (OPA LiDAR)
  10. 逆水寒跑商时服务器维护,逆水寒跑商路线推荐 合适的路线让你事半功倍