Ради полноты, начиная с .NET 4.0 код можно переписать так:
Guid.TryParse(queryString["web"], out WebId);
TryParse никогда не генерирует исключения и возвращает false, если формат неправильно, установив WebId на Guid.Empty
.
Начиная с C # 7 , вы можете избежать введения переменной в отдельной строке:
Guid.TryParse(queryString["web"], out Guid webId);
Вы также можете создать методы для анализа возвращаемых кортежей, которые недоступны в .NET Framework, начиная с версии 4.6:
(bool success, Guid result) TryParseGuid(string input) =>
(Guid.TryParse(input, out Guid result), result);
И используйте их так:
WebId = TryParseGuid(queryString["web"]).result;
// or
var tuple = TryParseGuid(queryString["web"]);
WebId = tuple.success ? tuple.result : DefaultWebId;
Следующее бесполезное обновление этого бесполезного ответа происходит, когда деконструкция внешнего параметры реализованы в C # 12.:)
"ANSI" в «Блокноте» означает любую кодовую страницу, которую использует ваши окна. Попробуйте ISO8859-1, в большинстве случаев он работает.
Прежде всего, вам нужно знать кодировку файла. Откройте его с помощью гекседитора. Сколько байтов занимает символ? Если это только один, то файл не в UTF-8, но, скорее всего, в некоторой кодировке ISO-8859 или аналогичной кодировке Windows (например, Win-1252). Как упоминалось ранее, велика вероятность, что ISO-8859-1 является правильной кодировкой. Для языков Восточной Европы правильным выбором будет ISO-8859-2.
Второй проблемой будет набор символов, поддерживаемый вашей базой данных для символьных столбцов (этот параметр устанавливается во время установки / создания нового экземпляра), но поскольку вы можно вставить эти символы напрямую, в этом случае проблем не будет.
Какой драйвер jdbc вы используете? Тонкий драйвер не должен создавать никаких проблем в этом отношении, тогда как драйвер OCI может создать дополнительный уровень проблем, если клиент '
Была эта проблема. Вам понадобятся две вещи: столбцы NVARCHAR2 и вызов специального метода Oracle в подготовленном заявлении, чтобы уведомить Oracle о кодировке строки:
/**
* Sets a statement parameter as NCHAR. Use before setting the field value.
* @param pstmt the prepared statement
* @param index the parameter index
*/
public static void setNChar(PreparedStatement pstmt, int index) {
OraclePreparedStatement opstmt = (OraclePreparedStatement)pstmt;
opstmt.setFormOfUse(index, OraclePreparedStatement.FORM_NCHAR);
}
Если вы используете простую строку SQL с символами Unicode, это работает так, как Oracle получает все команды SQL в UTF-8: драйвер автоматически переводит. Однако для использования подготовленного оператора вам необходимо явно сообщить об этом оракулу.
Вы также можете попробовать PreparedStatement.setNString () , если вы запускаете Java 6 и используете драйвер ojdbc6. (В моем случае нам пришлось использовать Java 5 с драйвером версии 4 - не спрашивайте почему)
(Примечание: я знаю, что это привязка к поставщику, поскольку вы вынуждены использовать конкретные классы Oracle вместо интерфейсов jdbc)
Я предлагаю создать небольшую программу, которая читает из файла и распечатывает значение Unicode прочитанных символов, чтобы вы могли убедиться, что показанные значения верны. Таблицы кодов доступны по адресу http://www.unicode.org/charts/ - вы, вероятно, справитесь с таблицами Basic Latin и Latin-1.
Я предполагаю, что это кодировка родная кодировка Windows. Тогда вы можете полностью исключить параметр «UTF-8» и позволить Java использовать кодировку платформы по умолчанию.
Поддерживает ли поле вашей базы данных Юникод? В MSSQL тип поля должен быть nvarchar вместо varchar. Какую базу данных вы используете?
Вам необходимо закодировать это в ISO 8859-1, а не в UTF-8.
Первое, что нужно сделать, это вызвать System.out.println () строки после того, как вы загрузили ее из файла. Если он поврежден в консоли, ваш файл на самом деле не является UTF-8, если он выглядит нормально, у вас проблема с тем, как вы сохраняете его в базе данных :)
Вы можете вручную сравнить шестнадцатеричный дамп выводимых символов с различными кодировками ( пример кода ), хотя это может быть трудоемким процессом. В качестве альтернативы вы можете использовать библиотеку ICU , чтобы попытаться определить используемую кодировку , хотя это вряд ли надежный метод.
Как был создан файл CSV? Если он был создан приложением Windows в ОС на английском языке, то кодировка, вероятно, будет windows-1252 ( каноническое имя «Cp1252» в Java ); в польской системе это может быть windows-1250 . Лучше всего выяснить наверняка, в какой кодировке был сохранен файл.