我通过阅读文本格式.txt文件来生成XML。但我得到了奇怪的角色结果。我希望看到我的文本在xml中与.txt文件中的文本相同。
这是来自.txt文件的文本
ZENA
muškarac
devojčica
dečak
AUTOMOBIL
AUTOBUS
DRVO
kuća
亚飞
MACKA
PAS
cvet
这是我的xml奇怪的结果。
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<resources>
<string name="0s0">žena</string>
<string name="1s1">muškarac</string>
<string name="2s2">devoj�ica</string>
<string name="3s3">de�ak</string>
<string name="4s4">automobil</string>
<string name="5s5">autobus</string>
<string name="6s6">drvo</string>
<string name="7s7">kuća</string>
<string name="8s8">avion</string>
<string name="9s9">ma�ka</string>
这是我的代码。
FileInputStream fstream = new FileInputStream("D:/12.txt"); // Path of input text file
BufferedReader br = new BufferedReader(new InputStreamReader(fstream));
String strLine;
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
//root elements
Document doc = docBuilder.newDocument();
Element rootElement = doc.createElement("resources");
doc.appendChild(rootElement);
int i = 0;
String attrName;
//Read File Line By Line
while ((strLine = br.readLine()) != null) {
attrName = i+"s"+i;
i++;
//staff elements
Element string = doc.createElement("string");
rootElement.appendChild(string);
//set attribute to staff element
Attr attr = doc.createAttribute("name");
attr.setValue(attrName);
string.setAttributeNode(attr);
string.appendChild(doc.createTextNode(strLine));
}
//Close the input stream
in.close();
//write the content into xml file
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
DOMSource source = new DOMSource(doc);
StreamResult result = new StreamResult(new File("D:\\italian.xml")); // Path of output text file
transformer.transform(source, result);
System.out.println("Done");
我在这里研究了很多帖子,但我无法得到我想要的解决方案。我想在xml文件中看到相同的charecters / text,因为它们显示在.txt文件中。
答案 0 :(得分:4)
使用InputStreamReader时,您需要提供正确的字符集/编码。试试这个:
... new InputStreamReader(in, "UTF-8");
答案 1 :(得分:1)
尝试设置inputStreamReader的编码,例如
new InputStreamReader(in, "UTF-8");
如果这不起作用,请尝试确定文件使用的编码。
答案 2 :(得分:1)
你有两个问题。
你不知道你的编码是什么
.txt文件在。你需要阅读它
使用正确的编码,可能是UTF-8。当你
只需使用new InputStreamReader()
没有指定编码,java
将使用平台默认值
编码,相当于
使用随机编码。
XML文件以UTF-8编码存储,这是默认值。 如果要在文本编辑器中阅读它,则需要一个编辑器 支持UTF-8。