Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 具有特殊字符的Xstream_Java_Encoding_Utf 8_Xstream - Fatal编程技术网

Java 具有特殊字符的Xstream

Java 具有特殊字符的Xstream,java,encoding,utf-8,xstream,Java,Encoding,Utf 8,Xstream,我在使用XStream,但我对特殊字符á、é、í、ó、ú和ñ有问题 我试过这个: String charset = "UTF-8"; xstream = new XStream(new DomDriver(charset)); (不工作) 我发现 我的问题是,我不知道如何提供一个作家 // get the model from the map passed created by the controller Object model = map.get("model"); Objec

我在使用XStream,但我对特殊字符á、é、í、ó、ú和ñ有问题

我试过这个:

  String charset = "UTF-8";
  xstream = new XStream(new DomDriver(charset));
(不工作)

我发现

我的问题是,我不知道如何提供一个作家

// get the model from the map passed created by the controller
Object model = map.get("model");

Object viewData = transformViewData(model);

//TEST
Writer w = new OutputStreamWriter(viewData, "UTF-8");
//FINTEST

// if the model is null, we have an exception
String xml = null;
if (viewData != null){
    xml = xstream.toXML(viewData, w);  //Err:Cannot find symbol...
}else{
    // so render entire map
    xml = xstream.toXML(map, w); //Err:Cannot find symbol...
}

response.getOutputStream().write(xml.getBytes());
是的

是的


终于,它起作用了

我修复了在xml.getByte()中添加“UTF-8”的问题:


终于,它起作用了

我修复了在xml.getByte()中添加“UTF-8”的问题:


事实上,我感到有点困惑

Xstream做得很好,让我解释一下原因

在文本编辑器中打开xml时,“特殊字符”会被弄乱;事实上,首先不应该在文本编辑器中打开xml

请记住,Xml和Html是成对的语言(第一种用于传输数据,第二种用于显示数据),就像Html文件一样,Xml文件应该由web浏览器打开。


因此,Xstream替换了字符串中的“特殊字符”,这样您就可以在web浏览器中正确地读取它。

实际上,我觉得这里有点混乱

Xstream做得很好,让我解释一下原因

在文本编辑器中打开xml时,“特殊字符”会被弄乱;事实上,首先不应该在文本编辑器中打开xml

请记住,Xml和Html是成对的语言(第一种用于传输数据,第二种用于显示数据),就像Html文件一样,Xml文件应该由web浏览器打开。


因此,Xstream将替换字符串中的“特殊字符”,以便您可以在web浏览器中正确读取它。

我没有XML文件,而是从映射中获取数据。新的OutputStreamWriter(viewData,“UTF-8”)行无效。OutputStreamWriter将OutputStream作为参数。您想将XML发送到哪里?到web浏览器,该部分工作正常,问题是特殊字符。如果您有编码问题,则工作不太正常。在我的示例中,将新的FileOutputStream(“test.xml”)替换为response.getOutputStream(),并使用response.setCharacterEncoding(“UTF-8”)我没有xml文件,我从映射中获取数据。新的OutputStreamWriter(viewData,“UTF-8”)行无效。OutputStreamWriter将OutputStream作为参数。您想将XML发送到哪里?到web浏览器,该部分工作正常,问题是特殊字符。如果您有编码问题,则工作不太正常。用response.getOutputStream()替换示例中的新FileOutputStream(“test.xml”),并使用response.setCharacterEncoding(“UTF-8”)
Writer w = new OutputStreamWriter(new FileOutputStream("test.xml"), "UTF-8");
XStream.toXML(object, w);
response.getOutputStream().write(xml.getBytes("UTF-8"));