2010-05-27 49 views
2

У нас очень странная проблема в приложении, и вдруг мы начали замечать перевернутые вопросительные знаки, сохраняемые вместе с другим текстом, введенным в поля на экране. Эти перевернутые вопросительные знаки не были первоначально введены пользователями, и неясно, откуда они взялись. Мы используем Oracle 10g с java. И это происходит даже тогда, когда данные не копируются из Microsoft WordПеревернутый вопросительный знак вопроса

+0

Какие данные предоставляются? Как он управляется приложением? Как он хранится в базе данных? Что изменилось в коде приложения или платформе развертывания непосредственно перед тем, когда вы впервые заметили проблему? – Timothy

+0

Данные являются строкой, ее свободное поле (текстовое поле в jsp), оно хранится как varchar в базе данных. Это, я думаю, происходит, когда запрос передается сервлету, поскольку я не вижу причин, что он можно манипулировать в сервлете. – mita

ответ

2

Перевернутая знак вопроса часто используется, когда символ хранится не могут быть оказаны клиентом. Так часто данные в базе данных в порядке, это ограничение в клиенте.

Моим первым шагом было бы использовать функцию DUMP для идентификации байтов. В качестве первого шага, я бы раздеть общие «известные действительные» символы (буквы, цифры и пробел)

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

Тогда я концентратором на то, что осталось. Обычно есть куча редких, но приемлемых, пунктуаций (точка, запятая, дефис, апострофа и т. Д.). Я исключаю их один за другим.

Все, что я не могу исключить Я буду исследовать (т.е. google эти байты, поэтому я использую параметр 16 для DUMP, чтобы получить их в шестнадцатеричном виде). Это, вероятно, какой-то акцентированный характер, или цитата вроде «теста», а не «тест».

0

Спасибо всем за ваш ответ. Некоторые, как есть это конкретное текстовое поле в jsp, для которого это происходит. И он сохраняет этот странный символ в этом столбце в таблице, когда нет данных для этого поля. Данной также не корректно отображать в базе данных. странная часть, это даже не происходит с каждой записью, так как я не мог ее воспроизвести.

2

Может ли пользователь вставить строку из MS Word в поле jsp?

0

Я нашел решение этой проблемы, хотя до сих пор не знаю причины.

**** код, который вызывает ошибку: ****

если (certHolderLoanNumber == NULL) {

certHolderLoanNumber = ""; // мы не хотим, чтобы отобразить "нулевой"

}

% Количество>

    займа: "/>

Код, который решил проблему:

certHolderLoanNumber = certificateHolder.getCertHolderLoanNumber();

    займа Номер: «/>

Раньше, когда поле certHolderLoanNumber был явно установлен в„“, то значение, извлеченное в соответствии видно, запустив отладчик был» & NBSP».И когда это значение впоследствии было сохранено в базе данных, в xml clob появлялся знак «вверх дном». GenUtils.nonnull также возвращает пустую строку, но на этот раз не появилось вопросительного знака. Странно !!

+0

Это странно. Как вы, наверное, знаете, ' ' - это объект html, представляющий пространство. Я не понимаю, как это может закончиться таким образом, если String манипулирует непосредственно в основной логике вашего приложения. Более подробная информация будет оценена. –

Смежные вопросы