프랑스어로 된 폴더 트리가 있습니다. 폴더/파일을 읽는 동안 é 대신 Ã ©를 반환합니다. 나는 캐릭터를 대체하지만 좋은 해결책은 아니다. 이 문제를 어떻게 해결할 수 있습니까? Google에서 답변을 찾았지만 도움이되지 않습니다.Java - é가 Ã ©가됩니다 - 문제를 해결하는 방법
감사합니다.
프랑스어로 된 폴더 트리가 있습니다. 폴더/파일을 읽는 동안 é 대신 Ã ©를 반환합니다. 나는 캐릭터를 대체하지만 좋은 해결책은 아니다. 이 문제를 어떻게 해결할 수 있습니까? Google에서 답변을 찾았지만 도움이되지 않습니다.Java - é가 Ã ©가됩니다 - 문제를 해결하는 방법
감사합니다.
이 코드는 일반적으로 올바른 인코딩 형식 (아마도 UTF-8)으로 텍스트를 디코딩하지 않을 때 발생합니다.
좀 더 정확한 대답을 원하면 코드를 게시하여 수정하도록하십시오.
인코딩 문제가 있습니다.
모든 문자열은 실제로 비트 집합입니다. 그것들을 읽기 쉽게하기 위해서 우리는 읽을 수있는 문자 표현에 비트 그룹의 매핑을 사용합니다. 이러한 '맵'은 인코딩이라고하는 것을 나타냅니다.
'지도'를 사용하여 인코딩 된 비트를 읽고 다른 '지도'를 사용하여 표시하기 때문에 문제가 발생했습니다.
동일한 인코딩을 사용하고 항상 문자열 조작 함수가 사용중인 인코딩과 작동하는지 확인하십시오. 그것은 귀하의 응용 프로그램을 올바르게 작동시키는 근본입니다.
응용 프로그램, set the encoding to utf-8 시작할 때 : 위의 링크에서 언급 한 바와 같이, 많은 자바 클래스는 인코딩을 캐시 것을
가java -Dfile.encoding="UTF-8" YourMainClass
참고; 따라서 런타임 중에 인코딩을 변경하면 해당 클래스의 모든 클래스에 영향을주지 않을 수 있습니다. his answeranother question에의 tchrist에서
복사 설명 :
\N{LATIN SMALL LETTER E WITH ACUTE}
문자 코드 포인트U+00E9
입니다. UTF-8의 경우는\xC3\xA9
입니다. 당신이 주변에 돌고 고유 한 코드로 포인트U+00C3
및U+00A9
를 두 바이트를 처리하는 경우는하지만, 그 각각
\N{LATIN CAPITAL LETTER A WITH TILDE}
및\N{COPYRIGHT SIGN}
이다.
VM의 전역이 아닌 코드의 특정 위치에 인코딩을 명시 적으로 설정하는 것이 좋습니다. 'file.encoding' 속성은 Java SE 표준 라이브러리의 모든 기본 인코딩을 제어하지 않습니다. –
코드가 올바른 비트를 표시하고 있습니다. 잘못된 점은 실제로 비트가 다른 인코딩에 있다고 들었을 때 그 비트를보기 위해 사용하고있는 것입니다.
이것은 Java 문제가 아닙니다. 자바 출력을보기 위해 사용하는 소프트웨어에 문제가 있습니다. 예를 들어, 터미널 인코딩은 Java가 방출하는 UTF-8이 아닌 ISO-8859-15로 설정 될 수 있습니다.
외부 세계에 대한 모든 UTF-8 워크 플로우와 추상적 인 유니 코드 코드 포인트의 내부 세계가 실제로 도움이됩니다.
일부 입력을 잘못 읽었을 가능성이 있습니다. 입력은 UTF-8이지만 일부 레거시 8 비트 인코딩으로 오인하고 있습니다. 하지만 내 생각에 이미 주어진 것은 디스플레이 장치/프로그램의 인코딩이 잘못 설정된 것입니다.
나는 당신이 사용하고있는 코드를 게시하여 시작할 수
writer1 = new FileWriter(outputFile, true);
writer2 = new BufferedWriter(writer1);
String str = new String(stringBuffer.toString().getBytes(), **"ISO-8859-1"**);
writer2.write(str);
writer1.flush();
writer2.flush();
을하고있다 파일에
é
자바 유니 코드를 인쇄하는 코드 아래 사용했다. 아마 UTF-8 일 때 기본 문자 인코딩을 사용하여 읽는 것일뿐입니다. 그러나 코드를 보지 않고는 말할 수 없습니다. –또한 시스템에 설정된 운영 체제 및 기본 로케일에 유의하십시오. 예를 들어 러시아어 로켈/언어가 설정된 Windows에서 모든 파일 이름은'Cp866' 인코딩으로 인코딩됩니다. 다른 언어에는 Windows에서 사용되는 다른 비 유니 코드 인코딩이 있다고 생각합니다. –
루트 폴더 경로를 지정하여 하위 폴더에 액세스하고 있습니다. 루트 경로 이름은 영어입니다. 나는 단지'new File (rootPath) '을 사용하고있다. 특별한 것은 없다. 폴더/파일에 é이 있으면 java에서 찾을 수 없습니다. – user2172625