2013-11-28 3 views
1

Java에서 파일 이름에 중국어 문자로 파일을 만드는 방법은 무엇입니까? 많은 스택 오버플로 응답을 읽었으나 적절한 해결책을 찾을 수 없습니다.파일 이름에 영어 이외의 문자로 파일 만들기

private void writeFile(String fileContent) { 
try{ 
    File file=new File("C:/temp/你好.docx"); 
     if(file.exists()){ 
      file.delete(); 
     } 
     file.createNewFile(); 
     FileOutputStream fos = new FileOutputStream(file); 
     fos.write(fileContent); 
     fos.close(); 
    } 
    catch(Exception e) 
    { 
     e.printStackTrace(); 
    } 
} 

파일은 출력 디렉토리에 기록되지만 파일의 이름이 어떤 쓰레기 값이 들어 다음과 같이 지금까지 작성한 코드입니다. 미리 감사드립니다.

+0

중국어 문자가 유니 코드에 존재하므로이 기능이 작동하지 않는 이유는 분명하지 않습니다. 시도한 코드 샘플을 예외 로그와 함께 게시 할 수 있습니까? 어떤 플랫폼 (Win/Mac/Unix)과 파일 시스템 (NTFS/ext3/JFS)이 문제를 일으키고 있습니까? –

+0

예외는 없습니다. 파일이 생성되었지만 임의의 파일 이름으로 생성되었습니다. 나는 Windows 7 (NTFS)과 JDK 6을 가지고 일하고있다. –

+0

글쎄 나는 downvoted하고 코드를 묻는 주석을 타이핑하고 있었고 타이핑하는 동안 그것을 추가했다. 유니 코드 이스케이프 시퀀스를 사용할 필요가있다 : 그 이름으로'\ uNNNN'. 그 캐릭터에 익숙하지는 않지만 UTF-32 영역으로 이동하고있는 것 같습니다. –

답변

0

나는 핵심이 내가 코멘트에서 언급 한 것임을 믿습니다.

소스 코드에서 중국어 문자 (또는 다른 비 아스키 문자)를 리터럴로 사용할 수 있습니다. 당신은 반드시 두 가지를해야하지만 :

  1. 인코딩을 사용하면 소스 파일을 저장하는 데 사용하는 그 문자를 표시 할 수있는 인 -encoding 매개 변수는 전달
  2. (나의 제안은 UTF-8을 고수하는 단지입니다) javac은 파일의 인코딩과 일치해야합니다. 당신이 UTF-8을 사용하는 경우 난 그냥 당신이 코드의 비슷한 조각을 시도

javac -encoding utf-8 Foo.java

처럼 예를 들어, 귀하의 javac의 명령을해야 보이는, 그리고 내 컴퓨터에서 잘 작동합니다.