2012-03-30 3 views
2

몇 개의 웹 사이트를 고치고 있습니다. 그 중 일부는 ' 대신에 어퍼 스트로피 대신 " 대신 따옴표로 과 같은 특수 문자와 라틴 문자가 아닌 문자를 포함하고 있습니다.BufferedReader가 지정된 UTF-8 형식으로 읽히지 않는 이유는 무엇입니까?

여기

내가 콘솔에 인쇄 관련 텍스트가 ... 진짜 커브 볼이다. IDE (Netbeans)에서 실행하면 모든 것이 잘 인코딩됩니다. ...

사람이 내가 나에게 나는 이미 그 일을했다고 가정 해 봅시다 -Dfile.encoding=UTF8JAVA_TOOL_OPTIONS 환경 변수를 설정해야이 여전히 문제라고하기 전에 ΓÇ£I Need Your HelpΓÇ¥ : 내 컴퓨터에서 실행할 때 “I Need Your Help”는 다음과 같이 출력됩니다 . 게다가, 버퍼링 된 리더의 인코딩을 "UTF-8"으로 지정하는 것이 어쨌든 무시되지 않아야합니까? 여기

는 몇 가지 정보입니다 :

  • 나는 1.7
  • 나는 모든 기계에 대한 윈도우 7 시스템에서 실행 해요로 대상 플랫폼으로 JDK 7을 사용하고 있는데 나는 이것을에 실행하고있어 동일한 문제가 발생합니다 (일부는 JAVA_TOOL_OPTIONS 집합이 없지만 어떤 차이가없는 것으로 보입니다).
  • 나는

여기 내 코드의 ... 그것을 사용하고 기본 인코딩은 Cp1252를 생각합니다. 더 많은 정보가 필요한지 여부를 알려주세요. 감사!

/** 
* Using the given url, this method creates and returns the buffered reader for that url 
* 
* @param urlString 
* @return 
* @throws MalformedURLException 
* @throws IOException 
*/ 
public synchronized static BufferedReader getBufferedReader(String urlString) throws MalformedURLException, IOException { 
    URL url = new URL(urlString); 
    InputStream is = url.openStream(); 
    BufferedReader br = new BufferedReader(new InputStreamReader(is, "UTF-8")); 
    return br; 
} 
+0

호스트 A에서 직접 자바 프로그램을 호출 어디 문제를 가지고 있었다 : 자바 myprogram 일했다,하지만 난 원격으로 실행 hostA에서 "자바 myprogram"@ 나를 ssh를하려고 할 때 그것은 작동하지 않았다. utf8 입력 파일을 읽는 중입니다. -Dfile.encoding = utf8을 추가하면 효과적입니다! 해당 스 니펫에 대한 Thx – Paul

답변

2

두 가지 가능성이 있습니다. user1291492이 말한 것처럼 내용을 올바르게 읽을 수 있지만 터미널에서 사용하는 인코딩은 IDE에서 사용하는 인코딩과 다릅니다.

다른 가능성은 소스 데이터가 UTF-8이 아니기 때문입니다. 웹 사이트를 스크래핑하는 경우 웹 사이트에서 Content-Type 헤더를 통해 인코딩하는 데 사용하고 있다고 말하면 항상 UTF-8이라고 가정하지 말아야합니다.

+0

감사합니다. 콘솔 문제였습니다 ... 조금 당황 스럽습니다 ... – kentcdodds

1

IDE의 출력 "창"에는 아마도 utf-8 문자를 이해하고 인쇄 할 수있는 용량이 있습니다. 콘솔이 너무 발전되지 않을 수도 있습니다.

+0

믿을 수 없습니다. 그거였다. 미안, 나는 이것으로 많은 문제를 겪어왔다. 나는 이미 그것을 시도했다고 생각했다. 감사! – kentcdodds

+1

@kentcdodds 바늘의 눈을 통해 낙타를 운전하는 것이 Microsoft의 독점적 인 운영 체제를 UTF-8로 멋지게 연주하는 것보다 쉽습니다. UTF-8이 이제는 UTF-8이 지배적 인 텍스트 인코딩이 아니므로 특히 놀랍습니다. 단순히 유니 코드이지만 전세계 웹에서 볼 수있는 모든 텍스트가 포함됩니다. – tchrist

0
try { 
     reader = new BufferedReader(new InputStreamReader(in,"UTF-8")); 
    } catch (UnsupportedEncodingException e1) { 
     // TODO Auto-generated catch block 
     e1.printStackTrace(); 
    } 
     String line=""; 
     String s =""; 
    try 
    { 
     line = reader.readLine(); 
    } 
    catch (IOException e) 
    { 
     e.printStackTrace(); 
    } 
     while (line != null) 
     { 
     s = s + line; 
     s =s+"\n"; 
     try 
     { 
      line = reader.readLine(); 
     } 
     catch (IOException e) 
     { 
      e.printStackTrace(); 
     } 
    } 
    tv.setText(""+s); 
    } 
관련 문제