问题描述
一个javaweb项目部署在一台服务器上,服务器采用的是linux操作系统,调用其他公司提供的webservice接口获取到一个xml的字符串,然后使用dom在本地解析,得到的字符串是乱码,请问高手们这个问题怎么解决。publicstaticList<Product>readProductDomXml(Stringstr)throwsException{List<Product>products=newArrayList<Product>();DocumentBuilderFactoryfactory=DocumentBuilderFactory.newInstance();DocumentBuilderbuilder=factory.newDocumentBuilder();ByteArrayInputStreaminStream=newByteArrayInputStream(newString(str.getBytes("GB2312"),"UTF-8").getBytes());//ByteArrayInputStreaminStream=newByteArrayInputStream();Documentdom=builder.parse(inStream);Elementroot=dom.getDocumentElement();NodeListnodes=root.getElementsByTagName("information");for(inti=0;i<nodes.getLength();i++){Productproduct=newProduct();Elementelement=(Element)nodes.item(i);NodeListchildNodes=element.getChildNodes();for(intj=0;j<childNodes.getLength();j++){if(childNodes.item(j).getNodeType()==Node.ELEMENT_NODE){if("productnumber".equals(childNodes.item(j).getNodeName())){product.setProductNumber(childNodes.item(j).getFirstChild().getNodeValue());}if("productname".equals(childNodes.item(j).getNodeName())){product.setProductName(childNodes.item(j).getFirstChild().getNodeValue());}if("balancetype".equals(childNodes.item(j).getNodeName())){product.setBalanceType(childNodes.item(j).getFirstChild().getNodeValue());}if("balance".equals(childNodes.item(j).getNodeName())){product.setBalance(childNodes.item(j).getFirstChild().getNodeValue());}}}products.add(product);}for(inti=0;i<products.size();i++){System.out.println(products.get(i).getBalance());}inStream.close();returnproducts;}关键就是这里ByteArrayInputStreaminStream=newByteArrayInputStream(newString(str.getBytes("GB2312"),"UTF-8").getBytes());这样不能解决问题,得到的还是乱码。