针对乱码问题的分析与处理

在对一次需求开发过程中,遇到了乱码问题,针对问题的处理与分析总结如下

数据发送接收端

确定数据发送端与接收端,容易忽略的是中间层
问题描述:提供给需求管理平台的配置文件路劲同步接口,已将对应的HTTP服务发布至ESB,但需求管理平台依旧无法调用ESB发布的服务。
问题分析:需求管理平台并非直接调用ESB发布服务,而是通过调能开平台服务,能开平台调ESB服务实现服务调用。
解决方法;明确服务对端,避免忽略正中间层。

数据编码格式

问题描述:在进行测试的时候,配置文件路劲中文乱码,再和需求管理平台侧统一了编码格式后,测试依旧乱码,忽略了两侧的对端问题。
问题分析:清楚数据发送与接收端后,需要统一两端在传输数据过程中的字符编码格式
问题解决:
1)对中文路劲进行传输时,客户端使用URLEncoder进行转码,服务端使用URLDecoder进行解码
2)明确服务对端,即服务的提供者与消费者。例如需求管理平台的对端是能开平台,并非ESB服务集成平台,需求管理平台需要和能开平台统一数据传输过程中的编码格式。

常识问题

常见协议中编码格式问题,需要积累
需求开发过程中,使用的FtpClient工具进行下载,在测试的时候,发现中文的路径后,文件名不支持(即乱码),查阅了相关资料后终于找到了解决的方法。
客户端:apache的FtpClient。
使用类:org.apache.commons.net.ftp.FTPClient
问题描述:获取远程主机的指定文件时,提示文件为空,获取输入流异常,即目录名及文件名中的中文显示乱码
解决方法:
在网上Google了一些资料, FTP协议里面,规定文件名编码为iso-8859-1,所以目录名或文件名需要转码。
将中文的目录或文件名转为iso-8859-1编码的字符。参考代码:
String name=“目录名或文件名”;
name=new String(name.getBytes(“GBK”),“iso-8859-1”);

tips:
Java中字符串转码:
1)Java底层使用unicode进行编码,在使用String.getBytes()获取字节数组时,返回的是操作系统的默认格式的字节数组,通常在使用String.getBytes()时需要指定编码格式
2)服务端与客户端进行字符串转码时,需要遇见中间层,若服务端与客户端编码格式不一致,需要先统一编码格式。
如:在使用FtpClient时,得知远程主机的编码格式为UTF-8,在本地下载文件时,需要先使用String.getBytes(‘UTF-8’)获取文件路径的字节数组,然后再使用String path = new String([bytesArray],‘iso-8859-1’)初始化字符串

文章引用:
Oracle乱码,字节字符编码格式介绍:https://www.cnblogs.com/xdouby/p/5666624.html
FtpClient中文乱码:https://www.cnblogs.com/chenfei0801/p/3427310.html
Stirng.getBytes()方法解析:https://www.cnblogs.com/Joanna-Yan/p/6900536.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值