2010-05-27 62 views
2

我們在應用程序中出現了一個非常奇怪的問題,突然我們開始注意到與其他文本一起保存在屏幕上的字段中的問題。這些顛倒的問號最初不是由用戶輸入的,它們來自哪裏並不清楚。我們在Java中使用Oracle 10g。 即使未從Microsoft Word複製數據,也會發生這種情況顛倒的問號問題

+0

正在提供哪些數據?它是如何被應用程序操縱的?它如何存儲在數據庫中?在您第一次注意到問題之前,應用程序的代碼或部署平臺中發生了什麼變化? – Timothy 2010-05-27 21:40:46

+0

數據是字符串,它是一個空白字段(jsp中的文本框),它作爲varchar存儲在數據庫中。這是我猜想發生的情況,當請求被提交給servlet時,我沒有看到任何理由,可以在servlet中操作。 – mita 2010-05-28 06:00:35

回答

2

倒置問號通常用於當存儲的字符不能被客戶端呈現。所以數據庫中的數據通常很好,這是客戶端的限制。

我的第一步是使用DUMP函數來識別字節。 作爲第一步,我會去掉公共「已知有效」的字符(字母數字和空格)

select DUMP(translate(upper(col),'~ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890 .,','~'),16) dmp, 
     translate(upper(col),'~ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890 .,','~') val 
from ... 
where translate(upper(col),'~ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890 .,','~') is not null; 

然後我上剩下集中器。通常有一堆罕見但可接受的標點符號(點,逗號,連字符,撇號等)。我一一排除他們。

任何我不能排除我會研究(即谷歌這些字節,這就是爲什麼我用DUMP'16'選項,讓他們在十六進制)。它可能是一些重音字符,或像「測試」而不是平淡的「測試」的引用。

0

非常感謝您的回覆。一些如何在jsp中發生這種特定的文本字段,並且當沒有該字段的數據時,它將在表格的該列中保存這個奇怪的字符.Data在數據庫中也不能正確呈現。並且奇怪的部分是,這並不是每個記錄都發生,因爲我無法複製。

2

用戶是否可以在MS域中粘貼一行MS Word?

0

我發現了這個問題的解決方案,但仍然沒有意識到原因。

****其引起錯誤的代碼:****

如果(certHolderLoanNumber == NULL){

certHolderLoanNumber = 「」; //我們不希望顯示「空」

}

%>

   貸款號碼:「/>

這解決了這個問題的代碼:

certHolderLoanNumber = certificateHolder.getCertHolderLoanNumber();

   貸款數:「/>

以前當certHolderLoanNumber字段被明確設置爲‘’,通過運行調試器作爲每看到檢索到的值是」 & NBSP」。當這個值被進一步保存到數據庫中時,倒置問題標記出現在xml clob中.GenUtils.nonnull也返回空字符串,但這次沒有出現顛倒的問號。 奇怪!

+0

這很奇怪。正如您可能知道的那樣,' '是代表空間的html實體。我不明白如果字符串是直接在你的應用程序的核心邏輯中被操縱的話,它會如何結束。更多細節將不勝感激。 – 2010-06-06 12:21:07