在我的文本中有芬蘭文字符(例如ä,ö和å),這些字符在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. NSURL不轉換安全的字符串
- 5. Java將字節轉換爲二進制安全字符串
- 6. 將字節轉換爲UTF8編碼的字符串安全嗎?
- 7. PowerShell的安全字符串轉換
- 8. 如何將不安全的cookie轉換爲安全的cookie
- 9. JSLint的「不安全字符」
- 10. 如何使用python將url字符串轉換爲安全字符?
- 11. Java的往返安全字節數組至字符串轉換
- 12. 將字符串轉換爲整數安全的方式
- 13. javascript將字符串轉換爲css的安全類名稱
- 14. 將字符串轉換爲類的安全名稱
- 15. 如何安全地東西轉換爲字符串在JavaScript
- 16. 將字符類型轉換爲整數類型是否安全
- 17. 安全地將字符串轉換爲DateTime
- 18. C# - 將不安全的字節*轉換爲字節[]
- 19. django 1.2 GAE python - >將html轉換爲html安全字符串?以字符串
- 20. 將字符串標記爲HTML安全
- 21. 將文本安全地轉換爲XML
- 22. 替換'轉義字符後T-SQL的安全性如何?
- 23. JavaScript將科學記數法中不安全的整數轉換爲字符串
- 24. 從字符串到數字類型的快速安全轉換
- 25. 轉換爲安全字符串爲純文本
- 26. Xdocument - 如何轉換非html安全字符
- 27. 字符串不變性的安全性
- 28. C#將任何字符串轉換爲安全的跨平臺文件名?
- 29. 如何將此連接字符串轉換爲使用集成安全性?
- 30. 如何將此連接字符串轉換爲使用SSPI安全性?
我不認爲我真的會稱這些字符爲「不安全」。字符編碼必須正確,並匹配XML聲明,就這些了。 – 2010-02-08 09:29:51
顯然,我的servlet響應沒有response.setCharacterEncoding(「UTF-8」);但是當我添加它時,一切正常...... – newbie 2010-02-08 10:03:32