2010-04-16 6 views
3

저는 휴식 웹 서비스를 호출하는 앱을 만들고 있습니다. 때로는 XML 응답에 전화가 표시 할 수없는 문자가 포함되어 있습니다. 이러한 문자를 표시 할 때 대신 빈 상자가 표시됩니다. 이 문자들을 걸러 내고 싶습니다. 문자를 화면에 표시 할 수 있는지 어떻게 알 수 있습니까?웹 서비스에서 되돌아 오는 인식 할 수없는 문자는 어떻게 제거합니까?

일부 특정 문자가 포함

http://www.fileformat.info/info/unicode/char/0094/index.htm http://www.fileformat.info/info/unicode/char/0080/index.htm http://www.fileformat.info/info/unicode/char/0092/index.htm

+3

"이해"(인식 할 수없는 XML 엔터티) 및 "표시"(특정 유니 코드 코드 포인트가 누락 된 응용 프로그램 글꼴) 문제가 아닌 것이 확실합니까? 그것이 전자의 경우, 대답은 그것을 읽기 전에 XML을 정리하는 것이다. 후자의 경우 코드 포인트가 더 많은 다른 글꼴을 선택하거나 번들링하여 문제를 해결할 수 있습니다. – tucuxi

+1

어떤 문자가 올바르게 표시되지 않는지 설명 할 수 있습니다. 또한, 어떤 글꼴을 사용하고 있습니다. – the100rabh

+0

제대로 표시되지 않은 캐릭터와 같은 더 많은 정보를 게시 할 수 있다면 일반적인 대답이 아닌 것입니다. – Janusz

답변

5

안드로이드 지원 다음 encodings

  • Xml.Encoding ISO_8859_1
  • Xml.Encoding US_ASCII
  • Xml.Encoding UTF_16
  • Xml.Encoding UTF_8

US_ASCII 어떤 문제를해서는 안됩니다.

ISO_8859_1의 경우 제어 문자 0x00-0x1f 및 0x7f-0x9f에 대해서는 wiki 을 확인하고 필터링해야합니다. 물론 일치하는 글꼴을 사용하십시오.

UTF_8을 사용하거나 (16)가 더 복잡, 당신은이 메일 링 list 유용을 찾을 수 있습니다 Joels The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets

를 참조하십시오. 당신의 XML의 캐릭터 세트는 XML 선언의 의사 속성 또는 컨텐츠 유형 헤더에서 찾고 얻으려고 그런

Charset.defaultCharset(); 

: 모든

1

우선하여 장치의 디폴트 캐릭터 세트를 얻으려고 HTTP 호출의

:

<?xml version="1.0" encoding="utf-8" ?> 

또는

Content-Type: text/html; charset=utf-8 

장치의 디폴트의 캐릭터 세트는 XML의 캐릭터 세트와 다른 경우

, 당신은 당신이 새로운 문자열을 처리 할 때주의해야한다 : 예를 들어
new String(bytes); 

올바른 인코딩을 지정하는 것을 잊어 버리면 Dalvik은 그럴듯한 표시 오류가있는 장치의 기본 인코딩을 사용하게되기 때문에.
사용하는 것을 잊지 마십시오 :

new String(bytes, encoding); 
0

그것은 내가 각 문자에 Character.isIdentifierIgnorable()를 호출하고 무시할 경우를 포함 할 수 없습니다 나타납니다. Character.isISOControl()도 사용할 수 있습니다.

관련 문제