【问题标题】:Why does Java convert my characters into weird question marks?为什么 Java 会将我的字符转换为奇怪的问号?
【发布时间】:2013-12-23 23:25:05
【问题描述】:

让我解释一下。我有一个字符串,它是 JoaquÃ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");

【问题讨论】:

  • 1.您使用了太多括号。 2. 你有一个编码问题,仅靠这 3 行是无法解决的。您应该提供SCCE
  • occur 的值从何而来?为什么你认为它就是你所说的那样?
  • 伙计们,发生基本上是一个计数,即数字,所以这很好。更多代码已添加到问题中。
  • 信息不足。它可能是输入文件、控制台的限制或文本编辑器。它们都必须使用相同的编码。
  • 是的,输入文件有非 unicode 字符,所以我希望它是这样的,没关系,但至少不是这个?????。我在 Mac 上使用 Eclipse。

标签: java unicode


【解决方案1】:

使用 UTF-8 编写器

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

【讨论】:

  • 我不认为输出 unicode 是主要问题。输入读取错误,或者文本编辑器显示错误。
猜你喜欢
  • 2013-01-10
  • 2010-12-11
  • 2016-02-14
  • 2015-04-28
  • 2014-09-14
  • 1970-01-01
  • 2014-08-12
  • 2010-10-24
  • 2022-08-13
相关资源
最近更新 更多