У меня есть база данных оракула, которой NLS_CHARACTERSET является AL32UTF8.У меня есть приложение (ASP.NET C #) на клиенте, для которого NLS_LANG - FRENCH_FRANCE.WE8MSWIN1252.
Акцентированные символы хорошо отображаются в приложении.Однако, когда в предложении WHERE есть акцентированный символ, oracle не находит данные, хотя они там есть.
Я обнаружил, что «é» было записано в базе данных как «c3a9».Это делается на сервере (SqlDeveloper), поэтому работает нормально, потому что пока нет преобразования между наборами символов.
Однако в моем приложении на клиенте SQL-запрос с предложением WHERE, который содержит символ с акцентом, не работает.Например, у меня есть этот запрос:
string request = "UPDATE fonction SET libelle = '" + new_libelle.Replace("'", "''") + "' WHERE libelle = '" + old_libelle.Replace("'", "''") + "'";
Если в old_libelle есть акцентированный символ, oracle не находит данные и поэтому обновление не выполняется.
Я не могу изменитьNLS_CHARACTERSET базы данных, потому что она используется многими другими приложениями, и я не хочу, чтобы побочные эффекты появлялись.
Как это исправить?