В C# я читаю инструкции вставки SQL из текстового файла, а затем пытаюсь выполнить их в базе данных с помощью ADO.NET. Некоторые из запросов включают греческий символ в одном из столбцов. В частности, Mu (funky looking u), который используется для микросекунд (usec). Проблема в том, что вопросительные знаки фактически вставляются в базу данных (? Sec). Но у меня есть ощущение, что проблема заключается в чтении текстового файла, потому что отладчик также показывает знак вопроса внутри алмаза. Я использую метод ReadLine для StreamReader. Что я делаю не так?Как читать специальные символы из файла?
ответ
Проблема почти наверняка заключается в том, что вы используете неправильную кодировку при чтении файла. Вы знаете, что на самом деле кодирует ваш текстовый файл? Большинство .NET API используют UTF-8 по умолчанию, но ваш файл может быть в кодировке по умолчанию операционной системы, которая представлена Encoding.Default. Попробуйте это:
using (StreamReader reader = new StreamReader(filename, Encoding.Default))
{
...
}
Я также сильно рекомендуем вам попробовать получить его работу, не прикасаясь к базе данных. Читайте в файле затем распечатать символов в строке с точки зрения их кодировки Unicode:
public static void DumpString(string text)
{
Console.WriteLine("Text: '{0}'", text);
foreach (char c in text)
{
Console.WriteLine("{0}: U+{1:x4}", c, (int) c);
}
}
Если это дает правильные результаты, затем попытаться вставить его в базу данных. Таким образом, если база данных по-прежнему выглядит «неправильно», вы знаете, что проблема связана с доступом к базе данных, а не с доступом к файлу.
Вы должны проверить три вещи:
- Кодирование используется при открытии StreamReader
- Тип столбца на сервере базы данных (NVARCHAR вместо VARCHAR)
- Сопоставление фактически для столбец
Если какие-либо из этих ошибок являются неправильными, вы получите неправильное значение при чтении данных из БД.
- 1. Как читать специальные символы
- 2. FileOpenPicker - Как читать специальные символы
- 3. Удалить специальные символы из файла
- 4. Q: Powershell - читать и сообщать специальные символы из файла
- 5. пролог читать из файла бросает ошибку на специальные символы
- 6. Как читать специальные символы в java
- 7. Как читать специальные символы XML-файла с минидомом
- 8. Как сделать специальные символы из файла интерпретированными?
- 9. читать символы из файла - C#
- 10. Как заставить meSpeak.js читать специальные символы?
- 11. Как читать только алфавитные символы из txt-файла, игнорируя пробелы и другие специальные символы?
- 12. C# dbase IV читать специальные символы
- 13. Невозможно прочитать специальные символы из имени файла
- 14. Обрезка специальные символы из CSV файла
- 15. Unix заменить специальные символы из файла
- 16. Почему специальные символы читают false из файла
- 17. Как читать специальные символы из файловой системы в libgdx
- 18. Как читать специальные символы из номера типа ввода
- 19. Невозможно импортировать специальные символы из CSV-файла
- 20. Как читать символы из файла справа налево
- 21. Удалить Специальные символы из имени файла
- 22. Как читать и писать специальные символы в xml, android
- 23. Как читать файл с кодировкой ANSI, содержащий специальные символы
- 24. Как удалить специальные специальные символы
- 25. C# имя файла специальные символы
- 26. AS3 SWF файла: Специальные символы
- 27. Как читать специальные символы, такие как \ n из XML-файла в Java?
- 28. Символы как числа и специальные символы
- 29. Игнорировать специальные символы в файле.
- 30. Java - читать символы шрифта из файла ttf
Это похоже на трюк. Но я не уверен, что понимаю всю эту кодировку. Что делать, если другой пользователь с другим стандартным кодированием изменяет файл, а затем я пытаюсь перезапустить мое приложение с новым файлом. Не будет ли это работать? Должен ли я использовать Encoding.UTF8 вместо этого? – bsh152s
Использование UTF-8 - это гораздо лучшая идея, да, но вам нужно убедиться, что вы всегда знаете, что такое кодировка. Можете ли вы гарантировать, что файл будет * всегда * сохранен как UTF-8? –