在我的文本中有芬兰文字符(例如ä,ö和å),这些字符在XML中是不安全的,有没有用于此目的的任何库/框架?如何将不安全的字符转换为Java中安全字符的XML?
2
A
回答
3
XML支持Unicode,因此您唯一需要转义的就是五个基本的XML实体(gt,lt,quot,amp,apos)。如果您使用StringEscapeUtils.escapeXML,它会将您所有的ä,ö和å变成丑陋的\ uabcd内容。
+0
顺便说一句,有一些字符被XML规范视为非法,无论你如何编码它们。例如,ASCII NUL字符。 – 2010-02-08 11:49:49
1
StringEscapeUtils从Commons Lang有escapeXML方法,这将适合您的需求。
2
所以最好的方法ecsape字符串的XML是StringEscapeUtils.escapeXML Commons Lang,但作为有人在这里已经表示,这是不够的 E.g.有一些不可打印的控制字符,如果想要有效的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. 工具字符串转换为XML安全的字符串
- 2. 将StringBuilder转换为安全字符串
- 3. Java中的密码安全性 - 将char []转换为字符串
- 4. PowerShell的安全字符串转换
- 5. 如何将不安全的cookie转换为安全的cookie
- 6. JSLint的“不安全字符”
- 7. javascript将字符串转换为css的安全类名称
- 8. 如何安全地东西转换为字符串在JavaScript
- 9. 安全地将字符串转换为DateTime
- 10. 将字符类型转换为整数类型是否安全
- 11. django 1.2 GAE python - >将html转换为html安全字符串?以字符串
- 12. 将字符串标记为HTML安全
- 13. 替换'转义字符后T-SQL的安全性如何?
- 14. JavaScript将科学记数法中不安全的整数转换为字符串
- 15. 将文本安全地转换为XML
- 16. 转换为安全字符串为纯文本
- 17. Xdocument - 如何转换非html安全字符
- 18. 字符串不变性的安全性
- 19. C#将任何字符串转换为安全的跨平台文件名?
- 20. 从字符串中删除不安全的HTTP字符
- 21. 如何将此连接字符串转换为使用集成安全性?
- 22. 安全字符串切片
- 23. 如何将unicode字符转换为java中的实际字符?
- 24. 如何将字符串转换为java中的xml文件
- 25. 如何将大型XML转换为java中的字符串
- 26. 如何安全地解析字符串?
- 27. web.config中的连接字符串安全
- 28. 如何将字符串转换为xml
- 29. Java - 将字符串转换为字符[]
- 30. 将** T转换为*不安全。指针
我不认为我真的会称这些字符为“不安全”。字符编码必须正确,并匹配XML声明,就这些了。 – 2010-02-08 09:29:51
显然,我的servlet响应没有response.setCharacterEncoding(“UTF-8”);但是当我添加它时,一切正常...... – newbie 2010-02-08 10:03:32