为什么Java会将我的字符转换成奇怪的问号?

为什么Java会将我的字符转换成奇怪的问号?,java,unicode,Java,Unicode,让我解释一下。我有一个字符串,它是JoaqÃn Torres GarcÃa,当我使用上面的代码解析它时,生成的txt文件以Joa的形式具有相同的名称????托雷斯·加西亚。我正在使用以下代码将以这种方式组成的字符串写入文本文件: java.util.Iterator<String> itr = set.iterator(); int occur = 0; File w = new File("newnodes.txt");

让我解释一下。我有一个字符串,它是JoaqÃn Torres GarcÃa,当我使用上面的代码解析它时,生成的txt文件以Joa的形式具有相同的名称????托雷斯·加西亚。我正在使用以下代码将以这种方式组成的字符串写入文本文件:

java.util.Iterator<String> itr = set.iterator();
        int occur = 0;

        File w = new File("newnodes.txt");

                try (BufferedWriter wr = new BufferedWriter(new FileWriter(w))) {
                //String def = "nodedef>name VARCHAR,label VARCHAR";
                //wr.write(def);
                wr.newLine();
                    while (itr.hasNext()) {
                        occur++;
                        String str = (String.valueOf(occur))+","+ (itr.next());
                        wr.write(str);
                        wr.newLine();

                    }
                System.out.println("Node file Created");
java.util.Iterator itr=set.Iterator();
int=0;
文件w=新文件(“newnodes.txt”);
try(BufferedWriter wr=new BufferedWriter(new FileWriter(w))){
//String def=“nodededef>name VARCHAR,label VARCHAR”;
//wr.write(def);
wr.newLine();
while(itr.hasNext()){
发生++;
String str=(String.valueOf(occure))+“,”+(itr.next());
wr.write(str);
wr.newLine();
}
System.out.println(“创建的节点文件”);
使用UTF-8 writer

File w = new File("newnodes.txt");
try (Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(w), "UTF-8")))     {
//stuff here..

1.你使用了太多的括号。2.你有一个编码问题,单靠这3行是无法解决的。你应该提供一个。值
发生
从哪里来?为什么你认为它是你所说的?伙计们,发生基本上是一个计数,即数字,所以这很好。问题中添加了更多的代码。不够信息。可能是输入文件、控制台的限制或文本编辑器。所有这些都必须使用相同的编码。是的,输入文件有非unicode字符,所以我希望它是那样,没关系,但至少不是这样。我在Mac机上使用Eclipse。我不认为输出unicode是主要问题。输入要么是read错误,或者文本编辑器显示错误。