正在做一个测试桩模块,模拟一个socket Server 的行为。使用了java 语言来实现。
1. 实现一个简单的socket Server,实现了访问的监听,
2. 实现根据客户的请求做出应答,
3. 实现根据客户的各种不同请求作出各种不同的应答消息,
既然是做桩模块,当然目的是为了测试,因此要认真考虑如何方便测试工作。
在实现过程中,为了方便测试工作。作了如下考虑:
1. 把应答消息写到文件里,以避免频繁修改该桩模块程序。
2. 把不同的应答消息保存到不同的文件里,这样,只要server运行起来,就可以根据客户的请求来作出不同的应答,避免频繁启动server程序。
在本地测试没有任何问题,(本地环境XP/sdk1.6),但是在上传到server后,发现应答信息中莫名其妙的丢失了一些字符。(server环境linux/sdk1.4)
察看了使用的类,可以确定和sdk的版本没有关系。开始怀疑是应答信息文件的编码问题。
文件的编码在本地使用的是系统默认,gb2312。发现server的系统默认是utf-8。
既然找到了原因,就开始想办法解决。通过google 和 java doc,发现一些java编码问题的讨论文章。在此总结一下:
1. 直接使用FileReader肯定会有编码问题,换成FileInputStream 的话,可以通过指定编码方式来获得正确的文件内容。
BufferedReader bReader = new BufferedReader(
new InputStreamReader(
new FileInputStream(fileName[i]),"GB2312"));
2. 读入文件时,有read() 方法和readLine() 两种方法,readLine()方法会使用默认的编码方式,因此不能正确获得文件内容,因此应当使用read()方法。
3. 读取文件内容后,应当使用getBytes("GB2312")方法,正确转换编码方式。如:
b = s.getBytes("GB2312");
String o = new String(b,"GB2312");
4.把应答信息返回给client端时,也要正确指定编码方式。如:
out =
new PrintWriter(
new BufferedWriter(
new OutputStreamWriter(
socket.getOutputStream(),"GB2312")), true);
经过这样的处理,应答信息就会得到想要的编码形式。
分享到:
相关推荐
直接在url中传递中文参数时,读到的中文都是乱码,那么我们应该怎么将这些参数转换呢,接下来与大家分享下将字符串转换成utf-8或者gb2312编码的参数的技巧
最近需要对Linux与Windows平台下的字符传输出现乱码,对...参考了网上的UTF-8/UTF-16转换的资料,只有0x10000以下的Unicode编码进行了转换;对其代码进行了修改和补充,可以实现所有的UTF-8/UTF-16的转换,分享给大家。
java中将数据和图片导出到Excel文件
在java中通过ImageMagick安装包和im4java.jar把其他格式图片如HEIC转换为PNG,JPEG等常用格式图片。内有安装操作步骤及编码内容。亲测有效。 场景运用:ios操作系统在前端图片格式上传中。已普遍采用HEIC格式图片。...
主要介绍了在Java 8中将List转换为Map对象方法,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
java中将多个excel打包成zip文件下载.rar
java中将数据库中数据直接赋值给Map对象,目的是为了方便取值,这种方式需要用到spring框架
如何在Java中将XML文档转换成HTML文档.pdf
此工具可批量修改文件编码(默认gb2312转utf8,可修改) python版本:2.7 使用说明: dirGb2312ToUtf8('F:\work\MyProject\Source\MyProject') 把以上路径改为自己需要转换的文件夹即可
本文介绍了使用Java程序把Word文档直接转换成Html文件的方法。
把其他文件类型转换为pdf,java
使用java把数据库数据导出生成xml文件 使用java把数据库数据导出生成xml文件
提供一种Base64编码,并输出UTF-8格式的BASE64编码方式。本程序在微信小程序开发工具中已经测试通过。 Base64代码: [javascript] view plain copy print? (function(){ var BASE64_MAPPING = [ 'A','B','C','D',...
TIA博途_S7-1200中将BYTE类型的数据转换成char类型的具体方法和注意事项
txt数据集格式转化为xml数据集格式,txt数据集格式一般是yolov5的专用格式,这个脚本是将txt数据集格式转化为xml数据集的格式,使用的时候可以自行调整脚本里xml的每项,将它变成coco数据集格式或者其他数据集格式。
将java的日期转换成中文的日期,可以直接使用的源文件。
不懂这块的看看啦,mysql中中四中时间类型之一的TimeStamp,在项目中的简单运用,如何将TimeStamp转换成自己需要的时间格式
matlab中将mat的格式数据存为tiff图像。 matlab中将mat的格式数据存为tiff图像。 matlab中将mat的格式数据存为tiff图像。 matlab中将mat的格式数据存为tiff图像。matlab中将mat的格式数据存为tiff图像。matlab中将...
Android/java的long类型时间戳,转换成时间格式的工具类
支持在PHP中将编码转换为指定的编码方式 gb2big5 big52gb utf82u u2utf8 gb2utf8 utf82gb