2016-12-25 4 views
0

내 코드에 이상한 점이 있습니다. 파일을 열어 생성 된 문자열 (시간에 따라 달라짐)을 첨부하여 나중에 사용할 수 있도록하려고합니다. 내 응용 프로그램에서는이 문제가 한 번 이상 발생하지만, 이번에는 내가보고 싶은 결과를 제공하지 않습니다. 명확히하기 위해 :Android OutputStreamWriter는 UTF-8이 아닌 문자를 씁니다.

을 내 클래스 내부에 다음과 같은 코드를 사용하고 있습니다 :

private static final String ARRANGED_TXT = "arranged_txt.txt"; 

ArrangedTxtAsString은 다음과 같습니다 문자열입니다 :

try { 
    OutputStreamWriter oos = new OutputStreamWriter(context.openFileOutput(ARRANGED_TXT, Context.MODE_PRIVATE)); 

    oos.write(ArrangedTxtAsString); 

    oos.close(); 
} 
catch(FileNotFoundException e){ 
    Log.e("File Error", "File not found: " + e.toString()); 
} 

ARRANGED_TXT을로 정의되는

Banana 
Pineapple 
Orange 
Coconut 
Strawberry 

StringBuilder를 사용하여 만들었습니다.

이제 문제는, 생성 된 파일은 다음과 같습니다이다 :

enter image description here

다른 프로그램이 동일한 결과를 제공으로 그것은, ++ 메모장에 문제가 아니에요. 언급해야 할 중요한 점은 텍스트가 UTF-8이 아닌 문자로 구성되어있는 것처럼 보일지라도 나머지 프로그램에서도 완벽하게 처리된다는 것입니다. 이것은 조금 이상하게 들릴지 모르겠지만 내가 말하고자하는 것은 코드가 잘 작동하고 있다는 것입니다.하지만 문제는 텍스트 편집기를 통해 표시된 텍스트가 해당 텍스트와 일치하는지 않습니다. 봐. 알다시피, 나는 꽤 완전 주의자이며, 그래서 그것이 고쳐 지길 원한다. 이것은 미래에 문제가 될 수도 있습니다 (디버깅 등).

편집 :

문자열에 포함 된 중요하지 않는 것 같습니다 : 단일 문자, 숫자, 또는 무엇이든을, 그것은 똑같은 결과를 준다. 심지어 ""을 작성하면 이상한 문자가 표시됩니다!

나는 누군가가 여기에서 무슨 일이 일어나고 있는지 알고 있기를 바랍니다. 미리 감사드립니다.

+0

'oos.write (ArrangedTxtAsString.toString()); '을 의미 했습니까? – Natecat

+0

'ArrangedTxtAsString'은 이미'ArrangedTxtAsString = stringBuilder.toString();'으로 정의되어 있기 때문에 이미 문자열이어야합니다.'stringBuilder'는 단지'StringBuilder'의 인스턴스입니다. 이 사실을 알면이 방법도 효과가 없습니다. 어쨌든, 정말 도와 주셔서 감사합니다! ;) – PythonPupil1906

+0

'OutputStreamWriter'는 실제로 텍스트를 출력하는 데 적합하지 않습니다. 대신에'BufferedWriter'를 사용해야합니다. – Natecat

답변

0

당신은 UTF-8과 같은 캐릭터 셋 생성자를 사용해야 작성해야하는 경우

OutputStreamWriter oos = new OutputStreamWriter(context.openFileOutput(ARRANGED_TXT, Context.MODE_PRIVATE),"UTF-8"); 

OutputStreamWriter(OutputStream out, String charsetName)

그렇지 않으면 기본 인코딩이 사용되지는 모든 시스템에서 UTF-8

+0

나는이 것이 작동하지 않는 것이 두려워요. 정확히 같은 문자를 얻고 있습니다. 그럼에도 불구하고 시간 내 주셔서 감사합니다! :) – PythonPupil1906