2012-09-14 2 views
1

데이터가있는 ISO8859-1 (Latin1) 파일을 사용하는 Android 앱이 있습니다. 본질적으로, 포르투갈어 단어는 내가 강조하지 않은 상대자로 변환하고 싶습니다.악센트를 제거하는 방법?

예, 나는이에 대한 많은 인터넷 검색 및

 Normalizer.normalize(input, Normalizer.Form.NFD); 

트릭을 시도하고, 그래, 나는 또한

 String.replaceAll("[áâã]", "a").replaceAll(....).... 

시도했지만 문자열 악센트가 남아있다. 나는 또한 프로젝트 인코딩을 망칠려고했으나 어디에서 변경해야할지 확신하지 못했다.

+6

은 불변 그 기능은 일반적으로 오른쪽 새로운 문자열을 반환? – auselen

+0

예. (아래 참조) –

답변

2

좋아, 내가 대답을 발견했다. InputStreamReader를 읽을 때 "Latin1"을 추가했습니다 (구성에도 불구하고 UTF-8 또는 다른 것으로 가정하고 있음). 내가 예외 : UnsupportedEncodingException를 추가하는 데 필요한

br = new BufferedReader(new InputStreamReader(new FileInputStream(Environment.BR_DB), "Latin1")); 

:

그래서 이것은 내가 지금 파일을 읽는 방법이다. 자바 문자열에서 당신이 알고있는 이전 답변을

감사합니다,

L. 
2

처럼 auselen 말했다 ...

하지

String.replaceAll("[áâã]", "a").replaceAll(....) 

그러나

value = String.replaceAll("[áâã]", "a").replaceAll(....) 

[편집]

대체 할 수있는 객체로 문자열 클래스를 사용하지 마십시오. .. 난 그냥이 코드를 테스트하고 완벽하게 실행 ...

,451,515,
String weirdAs = "ábâcdeã"; 

String newString = weirdAs.replaceAll("[áâã]", "a"); 

Toast.makeText(_context, 
      "New String: " + newString + " Weird As: " + weirdAs, 
      Toast.LENGTH_LONG).show(); 

[편집 2]

그냥 재미를 위해 ... 여기 로그 캣 출력은 ...

09-14 09:16:23.502: I/Test(12022): Original String (Weird As): ábâcdeã 
09-14 09:16:23.502: I/Test(12022): New String: abacdea 
+0

예. 미안, 나는 더 명백해야 했어. 나는 newst = oldst.replaceAll (...) .... –

+0

업데이트 된 답변보기 ... – RyanInBinary

+0

네, 저도 잘됩니다. 하지만 파일에서 읽을 때 ... 인코딩 문제가 될 수 있습니까 ?? –

관련 문제