[Java] 部分乱码问题
前些日子,QQ群里面的某个小朋友在学习文件的读写, 发现一个乱码的问题。
文件内容如下:
运行结果如下:
代码如下:
观察其运行结果,部分的乱码,部分正常, 不像是一般编码的错误。 再仔细观察其代码, 发现数组分配的是10个字节,猜测其代码可能在临界处拆分了某些汉字,于是让小朋友改成12, 运行后一切正常。
以上只是一个小小的插曲,只是没想到自己也会在类似问题上中招。
自己一直有些小想法, 把一些繁琐网站操作根据日常的工作流程来程序化。 想了很久,去年就开始策划,直到前两天才真正动手。
代码很简单, 只是普通的httpclient使用,做些专属的爬虫。
万万没想到的是,运行结果却出现了乱码,而且还是部分的乱码。 网上也搜索过, 类似的问题,多人都遇到,只是再也没有见到过有能够解决问题的答案。
乱码的形式是这样的:
直接访问网站, 看到的内容是 “<td>编号:</td>” 但是通过代码回来的结果是 "<td>编?</td>" 。
代码如下:
HttpPost httppost = new HttpPost(url);HttpResponse response = httpclient.execute(httppost);HttpEntity entity = response.getEntity();StringBuffer sb = new StringBuffer();if (entity != null) {InputStream is = entity.getContent();byte[] bytes = new byte[4096];int size = 0;while ((size = is.read(bytes)) > 0) {String str = new String(bytes, 0, size, "UTF-8");sb.append(str);}is.close();}return sb.toString();
【警示】 以上代码片段仅为测试功能目的的示例,缺乏必要的异常处理。 如若在实际工程中引用,切记自行处理。