В недавнем проекте предусматривается импорт данных в базу данных Oracle. Программа, которая будет делать это, - это приложение С#.Net 3.5, и я использую библиотеку соединений Oracle.DataAccess для обработки фактической вставки.
У меня возникла проблема, когда я получил это сообщение об ошибке при вставке определенного поля:
ORA-12899 Значение слишком велико для столбца X
Я использовал Field.Substring(0, MaxLength);
, но все еще получил ошибку (хотя и не для каждой записи).
Наконец, я увидел, что должно было быть очевидно, моя строка была в ANSI, а поле было UTF8. Его длина определяется в байтах, а не в символах.
Это подводит меня к моему вопросу. Каков наилучший способ обрезать мою строку, чтобы исправить MaxLength?
Мой код подстроки работает по длине символа. Есть ли простая функция С#, которая умеет обрезать строку UT8 разумно длиной байта (т.е. Не отрывать половину символа)?