gpt4 book ai didi

java - xstream 处理非英文字符

转载 作者:行者123 更新时间:2023-11-30 05:59:31 25 4
gpt4 key购买 nike

我有以下代码:

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

package helloworld;

import com.thoughtworks.xstream.XStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import javax.swing.JOptionPane;

/**
*
* @author yccheok
*/
public class Test {
@SuppressWarnings("unchecked")
public static <A> A fromXML(Class c, File file) {
XStream xStream = new XStream();
InputStream inputStream = null;

try {
inputStream = new java.io.FileInputStream(file);
Object object = xStream.fromXML(inputStream);
if (c.isInstance(object)) {
return (A)object;
}
}
catch (Exception exp) {
exp.printStackTrace();
}
finally {
if (inputStream != null) {
try {
inputStream.close();
inputStream = null;
}
catch (java.io.IOException exp) {
exp.printStackTrace();
return null;
}
}
}

return null;
}

@SuppressWarnings("unchecked")
public static <A> A fromXML(Class c, String filePath) {
return (A)fromXML(c, new File(filePath));
}

public static boolean toXML(Object object, File file) {
XStream xStream = new XStream();
OutputStream outputStream = null;

try {
outputStream = new FileOutputStream(file);
xStream.toXML(object, outputStream);
}
catch (Exception exp) {
exp.printStackTrace();
return false;
}
finally {
if (outputStream != null) {
try {
outputStream.close();
outputStream = null;
}
catch (java.io.IOException exp) {
exp.printStackTrace();
return false;
}
}
}

return true;
}

public static boolean toXML(Object object, String filePath) {
return toXML(object, new File(filePath));
}

public static void main(String args[]) {
String s = "\u6210\u4EA4\u91CF";
// print ???
System.out.println(s);
// fine! show 成交量
JOptionPane.showMessageDialog(null, s);
toXML(s, "C:\\A.XML");
String o = fromXML(String.class, "C:\\A.XML");
// show ???
JOptionPane.showMessageDialog(null, o);
}
}

我在 Windows Vista 中通过命令提示符运行以下代码。

1) 请问为什么System.out.println无法在控制台打印出汉字?

2) 我打开 xstream 文件。保存的值为

<string>???</string>

如何让xstream正确保存汉字?

谢谢。

最佳答案

根据XStream FAQ ,它生成输出 (1) 无论您的平台默认编码是什么,并且 (2) 没有 XML 序言。这是一个非常糟糕的组合。

常见问题解答建议使用toXml(Writer)。如果您使用OutputStreamWriter,则可以在构造期间指定编码。由于 XStream 不发出序言,因此我建议使用“UTF-8”,因为这是 XML 规范所要求的。

或者,我想您可以遵循常见问题解答中的其他建议之一,并使用默认编码将 XML 序言手动写入流中。我不建议这样做。

关于java - xstream 处理非英文字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3047880/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com