有一個不可見的字符會破壞我的XML解析器。查看Unicode字符串的八進制編碼(瀏覽器內或OSX工具)
c&
的XML聲稱是UTF-8,但是當我嘗試使用<c:import . . . charEncoding="UTF-8">
我得到這個友好的信息:
ERROR: javax.servlet.jsp.JspException: java.io.CharConversionException: illegal utf8 encoding at (187)
我已經能夠找到源的問題。它是位於'c'和'&'之間的隱形字符。
我想知道更多關於這個角色的信息,但是似乎IntelliJ無法讓我看到隱藏的角色。 。 。
我想我看到一個在線工具可以將Unicode字符轉換爲它們的八進制值,但我無法再找到它。如果有我需要下載的工具,那很好。
有什麼建議嗎?
確定一個朋友告訴我od
,所以我給一個嘗試:
$ echo -n "c&" | od -c
0000000 c 357 273 277 357 273 277 &
0000010
如此看來問題是由字節序列357 273 277
難道因爲我們知道這是什麼序列是什麼?
爲什麼八進制而不是十六進制?只是好奇心,雖然我的第一步分析將轉換八進制到十六進制。 –
我試過十六進制,但它將字節組合成對並且很難理解。我從來沒有做過這樣的事情,並嘗試過所有可能的OD選項。 'c escape code'選項是最容易理解的,並且清楚地顯示了一種模式。 – jisaacstone
我同意'od -x'不是有用的格式。早在1988年,我寫了一個'odx'(十六進制的八進制轉儲,或'od -x done right')程序,它可以逐字節地執行十六進制轉儲,有點像'od -c'。我仍然使用它。 –