记:Nett发送HEX值,转码后中文乱码问题
项目场景:
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值,转码后中文乱码问题相关推荐
- activiti 部署流程图后中文乱码
Activiti工作流引擎使用 1.简单介工作流引擎与Activiti 对于工作流引擎的解释请参考百度百科:工作流引擎 1.1 我与工作流引擎 在第一家公司工作的时候主要任务就是开发OA系统,当然基本 ...
- 在一个JS文件中包含中文字符串,通过innerHTML输出后中文乱码?
在一个JS文件中包含中文字符串,通过innerHTML输出后中文乱码? Posted on 2008-07-13 12:00 尹合磊 阅读(1902) 评论(0) 编辑 收藏 所属分类: ASP.N ...
- Java的HttpClient类以POST方式提交数据,目标端收到后中文乱码
h ttpClient HttpMethod NameValuePair setRequestBody 今天开发时,遇到利用Java中HttpClient类以POST方式提交数据,目标收到后中文 ...
- 解决 IntelliJ IDEA 中 .propertise 文件保存后中文乱码
解决 IntelliJ IDEA 中 .propertise 文件保存后中文乱码 运行环境: IntelliJ IDEA 2021.3 (Ultimate Edition) 在 IntelliJ ...
- CSV文件导入数据库后中文乱码
CSV文件导入数据库后中文乱码 背景:我用的是Dbeaver连接的clickhouse数据库,向现场的同事要了数据(CSV格式文件),导入后都是途中这样的,根本用不了.在网上找到同样的情况的文章,记录 ...
- MATLAB去读网页源码时中文乱码
MATLAB去读网页源码时中文乱码 防止获取的网页源码中文乱码 %设置网页的编码方式(必须首先知道网页的编码方式) options = weboptions('CharacterEncoding',' ...
- 解决Debian安装后中文乱码
最近在VMbox安装了Debian7.10,选择中文安装,安装后出现乱码: 解决方法如下: 首先进入系统,打开终端(注意,终端因为乱码的原因不好找到) su 切换到超级用户权限 编辑locale文 ...
- Eclipse导入项目后中文乱码
在Eclipse中导入项目后出现中文乱码. 原因是导入的项目的编码方式与Eclipse中设置的编码方式不同. 1.去修改Workspace的编码方式 打开Eclipse--Window--Prefer ...
- vue项目打包部署后中文乱码
web项目 项目框架:springmvc + vue vue项目本地调试OK,npm run build后,放到springmvc项目的webinfo目录后,再次访问,出现中文乱码情况. 解决办法: ...
最新文章
- 万字长文,一文搞懂TCP/IP和HTTP、HTTPS
- 本地win7ping VM linux ipv6地址问题
- WINDOWS基础 ---- 系统目录
- c++ using 前置声明_C++ 类声明 类前置声明范例
- 错误 error C2220: 警告被视为错误 - 没有生成“object”文件
- 模块pdf2image.dll加载失败_Webpack 原理从前端模块化开始
- 第0周作业2:博客阅读和思考
- 小程序 | 微信小程序实现图片是上传、预览功能
- 【数字信号处理】划重点
- 数字小人时钟windows电脑屏幕保护
- 信号与频谱之正弦信号和复信号
- c语言实现mysql通配符_Mysql的C语言接口简单实现电话本功能
- session Asii码转换
- 养乐多深耕三线城市加码长、珠三角;欧康维视在港交所主板挂牌上市 | 美通企业日报...
- 超市管理系统-2(数据库代码以及数据库逻辑)
- Nodejs xlsx导出导出
- 程序员需要学习英语吗?
- JAVA潜心修炼五天——第2天
- linux的shell命令的工作方式,工作中给力的shell命令
- Python中的tuple
热门文章
- 12_OSR模块和空间参考系
- 【云原生】Kubernetes CRD 详解(Custom Resource Definition)
- 一个著名的任务调度系统是怎么设计的?(转自码农翻身)
- Yagmail | 命令行发送电子邮件竟变得如此容易……
- MySQL系统库之mysql
- 计算机二战一个双非学校怎样,双非二战学长成功调剂985:看他的调剂院校选择!...
- 全球神秘失踪--多维世界或时空扭曲解谜
- 没有伪装和欺骗才能活在当下
- LiDAR 5 相控阵激光雷达 (OPA LiDAR)
- 逆水寒跑商时服务器维护,逆水寒跑商路线推荐 合适的路线让你事半功倍