Что вызывает искажение текстовых полей с символами?? - PullRequest
2 голосов
/ 03 декабря 2009

У нас очень странная проблема с нашим приложением, внезапно мы начали замечать перевернутые знаки вопроса сохраняются вместе с другим текстом, введенным в поля на экране. Эти перевернутые знаки вопроса изначально не вводились пользователями, и неясно, откуда они. Мы используем Oracle 10g с Asp.Net.

Вот пример вопроса: «140, 141) ¿16-окт-07». Если кто-то видел это раньше и нашел способ исправить это, пожалуйста, дайте мне знать, как это сделать.

Ответы [ 3 ]

7 голосов
/ 03 декабря 2009

Это звучит как проблема кодировки символов. Пожалуйста, проверьте, какая кодировка вашей базы данных (таблиц) установлена ​​и какая кодировка объектов или строк, которые передают данные в базу данных. В случае несоответствия (БД в ANSI, Приложение в UTF-8) могут возникнуть проблемы такого рода.

2 голосов
/ 04 декабря 2009

Грег, вы должны проверить настройки NLS_CHARACTERSET, а не NLS_NCHAR_CHARACTERSET. Держу пари, это WE8ISO8859P1 или что-то похожее, а не юникод. Проблема возникает, когда отправленные данные в Unicode, который, вероятно, является UTF8, и Oracle пытается сопоставить символы с набором символов WE8ISO8859P1. Он подходит для большинства из них, но не подходит для символов с высоким числом ASCII, например 140.

Так что да, я видел ту же проблему в нашем приложении, и в нашем случае она была вызвана специальными кавычками («пример», «пример»), которые были скопированы из MS Word. Word автоматически преобразует двойные кавычки в некоторые другие кавычки. Решением было преобразовать базу данных в UTF-8.

0 голосов
/ 26 апреля 2010

Если ваши пользователи копируют из MS Word, вы можете отключить эту функцию. Это часть функциональности автозамены / автоформатирования. Если вы снимите флажок с вариантами замены для кавычек и апострофов, все будет в порядке. При вводе обязательно отключайте замены в автоформате и автоформате.

...