Java文件路径编码?

Java文件路径编码?,java,encoding,path,Java,Encoding,Path,我制作了一个简单的应用程序,要求用户输入一个文件夹名,稍后将在其中复制一些文件。问题是文件夹名称将包含非拉丁(希腊)字符。虽然文件夹是用正确的名称创建的,并且没有错误,但当我将其绝对路径存储在字符串中时,希腊字符是这样的?????\u 22-03-2012。当我尝试使用存储的路径发送复制的文件时,我得到了错误,因为java无法正确读取路径 package newOrderAndXCopy; import java.io.File; import javax.swing.JOptionPane;

我制作了一个简单的应用程序,要求用户输入一个文件夹名,稍后将在其中复制一些文件。问题是文件夹名称将包含非拉丁(希腊)字符。虽然文件夹是用正确的名称创建的,并且没有错误,但当我将其绝对路径存储在字符串中时,希腊字符是这样的?????\u 22-03-2012。当我尝试使用存储的路径发送复制的文件时,我得到了错误,因为java无法正确读取路径

package newOrderAndXCopy;

import java.io.File;
import javax.swing.JOptionPane;
import initiate.*;

public class NewOrder {

private String orderPath = null;

//constructor
public NewOrder() {     

    if(newOrderName()) {

        File nO = new File(orderPath);
        nO.mkdir();

    }       

}

public boolean newOrderName() {
    boolean name = false;
    int counter = 3;
    while(counter > 0) {

        String test = JOptionPane.showInputDialog("Here I ask the user to give the order name with this form -> ΠΑΡΑΛΑΒΗ ΧΧ-ΧΧ-ΧΧΧΧ (π.χ. ΠΑΡΑΛΑΒΗ 12-04-2013):");
        if(!test.matches("ΠΑΡΑΛΑΒΗ \\d{2}-\\d{2}-\\d{4}")) {

            JOptionPane.showMessageDialog(null, "Wrong name!", "Error", JOptionPane.ERROR_MESSAGE);
            counter--;

        }
        else {
                            //replace the space with underscore
            String rep = Config.savesPath + test.replaceAll(" ", "_") + "/";

            File no = new File(rep);
            if(!no.exists()) {
                orderPath = rep;

                --> Config.orderPath = no.getAbsolutePath();  <--
                /*This part is where it gets messy. The folder is created but this value is wrong so I can't use it later!*/
                name = true;
                JOptionPane.showMessageDialog(null, "The order folder was created!!", "Success!", JOptionPane.INFORMATION_MESSAGE);
                break;
            }
            else {
                JOptionPane.showMessageDialog(null, "The order with this name already exists!Pick another Name!", "Error", JOptionPane.ERROR_MESSAGE);
            }

        }

    }
    return name;
}
}
打包新订单和xcopy;
导入java.io.File;
导入javax.swing.JOptionPane;
进口.*;
公共类新秩序{
私有字符串orderPath=null;
//建造师
公共秩序(){
if(newOrderName()){
文件号=新文件(orderPath);
编号:mkdir();
}       
}
公共布尔值newOrderName(){
布尔名称=false;
int计数器=3;
而(计数器>0){
String test=JOptionPane.showInputDialog(“在这里,我要求用户用这个表单提供订单名称->π.χ.π∏Α∧∧∧∧ΑΗ∧-Χ-Χ∧∧ΧΧΧΧ(π.χ∏∏ΑΗ∧∧∧∧ΑΗ12-04-2013):”;
如果(!test.matches(∏ΑΡΑ∧ΑΗ\\d{2}-\\d{2}-\\d{4}”)){
showMessageDialog(null,“名称错误!”,“错误”,JOptionPane.Error\u消息);
计数器--;
}
否则{
//用下划线替换空格
String rep=Config.savesPath+test.replaceAll(“,“”)+“/”;
文件号=新文件(代表);
如果(!no.exists()){
orderPath=rep;
-->Config.orderPath=no.getAbsolutePath();查看

问题可能在于使用FileWriter或忽略编码参数(默认为平台编码)

要读取文件,需要在编辑器中设置正确的编码。
或者在可以指示字符集的地方编写HTML。

您的应用程序需要处理非拉丁字符,因此请确保默认编码支持这一点

System.setProperty("file.encoding", "UTF-8");

这可能是一个显示问题,而不是数据如何存储在
文件
对象中的问题。能否显示一些代码,演示如何生成文件以及如何打印路径?否,正如我所说的,文件夹正在创建中!问题是当我将其绝对路径存储在字符串中以用作目标路径lat时呃,它以非拉丁字符作为问号存储。但是实际创建的文件夹名称还可以。
String test=JOptionPane.showInputDialog
(存储在字符串中#1)仍然可以。
Config.savesPath
可能有点错误。如何获取它?如果来自.properties(ISO-8859-1)它应该与
\uxxx
codes.Config.savesPath一起使用,因为它只包含拉丁字符。Config.targetPath有问题,我通过询问文件的绝对路径得到它。只有当编码错误时,我才能得到
???
,比如控制台/IDE的System.out.println。所以它必须是输出代码。请显示出来。
System.setProperty("file.encoding", "UTF-8");