С помощью sqliteadmin создал БД, забил туда табличку, состояющую из двух полей. Забил в эту таблицу данные - id и контент некоторый на русском языке.
Пытаюсь получать данные таким образом:
private void btTestConnection_Click(object sender, EventArgs e)
{
StringBuilder builder = new StringBuilder();
DataTable table = ExecuteQuery("SELECT * FROM ComInstructions");
foreach (DataRow row in table.Rows)
{
var bytes = Encoding.GetEncoding(866).GetBytes(row["Instruction"].ToString());
builder.Append(Encoding.ASCII.GetString(bytes));
}
textBox1.Text = builder.ToString();
}
Но данные отображаются вопросами. Открывал файл БД в notepad, там показана кодировка ANSI (win-1251), хотя по сути БД на SQLite создается с использование кодировки UTF-8.
Как мне получить мою строку в корректном виде?
Примечание:
1. "Это будет глупый вопрос, но перед тем как писать непонятную возню с кодировками Вы пробывали просто сделать так: row["Instruction"].ToString()?"
Я бы и не делал непонятную возню с кодировками, если бы не попробовал именно эту строчку вывести! Выводит черные ромбы.
Метод ToString() преобразует объект в кодировку по умолчанию utf-16le.
2. Выдает все корректно, что и следовало ожидать: "hello my name is wa"
Попробовал создать новую БД с другой кодировкой UTF-16le. Получилось создать. Но запихнув туда русские буквы, уже в самом administrator в результатах были кракозябры. В программе тоже выдавало краказябры.
Примечание:
Скорее всего проблема в администраторе.
Попробовал создать БД программно, забил таблицу, поля, данные с русскими буквами. Правда базу создал с кодировкой UTF-16le.
Выполнил код:
private void btTestConnection_Click(object sender, EventArgs e)
{
StringBuilder builder = new StringBuilder();
DataTable table = ExecuteQuery("SELECT * FROM Instructions");
foreach (DataRow row in table.Rows)
{
builder.Append(row["fld"].ToString());
}
textBox1.Text = builder.ToString();
}
В textBox появилась русская надпись.=) победа. Вроде бы вопрос закрыт (надеюсь не будет казусов с русским больше).
RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.
Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.
Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.