XML에서 안전하지 않은 텍스트 (예 : ä, ö 및 å)에 핀란드어 문자가 있습니다.이 목적을위한 라이브러리/프레임 워크가 있습니까?안전하지 않은 문자를 Java의 XML 용 안전 문자로 변환하려면 어떻게해야합니까?
2
A
답변
3
XML은 유니 코드를 지원하므로 실제로 이스케이프해야하는 유일한 5 가지 기본 XML 엔터티 (gt, lt, quot, amp, apos)가 있습니다. StringEscapeUtils.escapeXML을 사용하면 모든 ä, ö 및 å을 못생긴 \ uabcd 것으로 바꿀 것입니다.
+0
덧붙여 말하자면, XML 스펙이 인코딩하는 방법에 관계없이 XML 스펙이 불법으로 취급하는 문자가 있습니다. 예를 들어, ASCII NUL 문자. –
1
StringEscapeUtilsCommons Lang에는 사용자의 요구에 맞는 escapeXML 방법이 있습니다.
2
그래서 XML에 대한 문자열을 ecsape하는 가장 좋은 방법은 가공 랭에서 StringEscapeUtils.escapeXML 이지만, 여기에 누군가가 이미 말했듯이 충분하지 일예이다 유효한 xml을 원한다면 문자열에서 제거해야하는 일부 인쇄 할 수없는 제어 문자가 있습니다.
/**
* Function to strip control characters from a string.
* Any character below a space will be stripped from the string.
* @param iString the input string to be stripped.
* @return a string containing the characters from iString minus any control characters.
*/
public String stripControlChars(String iString) {
StringBuffer result = new StringBuffer(iString);
int idx = result.length();
while (idx-- > 0) {
if (result.charAt(idx) < 0x20 && result.charAt(idx) != 0x9 &&
result.charAt(idx) != 0xA && result.charAt(idx) != 0xD) {
if (log.isDebugEnabled()) {
log.debug("deleted character at: "+idx);
}
result.deleteCharAt(idx);
}
}
return result.toString();
}
// Then
String s = org.apache.commons.lang3.StringEscapeUtils.escapeXml(stripControlChars(s));
또한 더 다음 필요에 탈출하는 방법의 이전 버전으로 StringEscapeUtils.escapeXML 커먼즈 랭 버전 3을 사용하는 것이 중요합니다 : 내가이 조각을 사용하여이 작업을 수행합니다.
관련 문제
- 1. 안전 인덱싱 내부 안전하지 않은 코드
- 2. 문자열을 유니 코드 문자로 변환하려면 어떻게해야합니까?
- 3. 안전하지 않은 문자를 제거하여 파일을 저장하는 방법
- 4. 문자 코드를 문자로 다시 변환하려면 어떻게해야합니까?
- 5. 스레드 안전 또는 스레드 안전하지 않은 PHP를 사용 하시겠습니까?
- 6. 내 안전 코드를 안전하지 않은 코드와 함께 사용해야합니까?
- 7. Perl에서 일본어 문자를 유니 코드로 변환하려면 어떻게해야합니까?
- 8. LATIN1 (sql)로 저장된 키릴 문자를 iconv로 실제 UTF8 키릴 문자로 변환하려면 어떻게해야합니까?
- 9. 스레딩 및 안전하지 않은 변수
- 10. 안전하지 않은 방식으로 Uploadify
- 11. - 안전하지 않은 코드, IntPtr입니다
- 12. 안전하지 않은 Crytographic 시스템
- 13. 안전하지 않은 일반적인 캐스트
- 14. 안전하지 않은 '^'jshint 문제
- 15. JSLint "안전하지 않은 문자"
- 16. Android의 안전하지 않은 클래스입니까?
- 17. Perl 스크립트를 사용하여 이진수를 문자열 문자로 변환하려면 어떻게해야합니까?
- 18. C#에서 "키"열거 형 값을 "int"문자로 변환하려면 어떻게해야합니까?
- 19. 파이썬에서 모든 일본어 히라가나를 카타카나 문자로 변환하려면 어떻게해야합니까?
- 20. 유니 코드 코드 포인트 (\ uXXXX)를 Perl의 문자로 변환하려면 어떻게해야합니까?
- 21. XML RSA 키를 PEM 파일로 변환하려면 어떻게해야합니까?
- 22. DataTable을 C#의 XML 파일로 변환하려면 어떻게해야합니까?
- 23. 파이썬에서 ":"과 같은 문자를 ":"로 변환하려면 어떻게해야합니까?
- 24. PHP에서 문자를 다른 문자로 변환
- 25. 전자 메일 문자열을 ASCII 문자로 변환하려면 어떻게합니까?
- 26. Java의 국가 별 문자로 tar 아카이브 만들기
- 27. 안전하지 않은 Java 인터페이스 구현
- 28. C#의 안전하지 않은 코드
- 29. 안전하지 않은 포인터/배열 표기법
- 30. Gendarme 안전하지 않은 코드 감지
나는이 문자들을 실제로 "안전하지 못함"이라고 생각하지 않습니다. 문자 인코딩은 정확해야하며 XML 선언과 일치해야합니다. –
분명히 내 서블릿 응답에 response.setCharacterEncoding ("UTF-8")이 없습니다. 하지만 그것을 추가 할 때 모든 것이 잘 작동했습니다 ... – newbie