Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Базы данных под .NET > Кодировки koi-8 и utf-8


Автор: starostin 15.10.2010, 14:53
Нужна помощь, ситуация такая: есть база в PostgreSQL, она в кодировке KOI-8, делали её до меня так что я с этим ничё поделать не могу, соответственно когда делаю запрос в цивилизованном utf-8 мне приходит всякая матершина. Долго копался искал примеры, но ничего не выходит, вот  как делаю я:

Код

private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
        {
            if (e.ColumnIndex == 2)
            {
                string str = e.Value.ToString();
                Encoding myEncode = Encoding.UTF8;
                Encoding unicode = Encoding.Unicode;
                byte[] unicodeBytes = unicode.GetBytes(str);
                byte[] ut8Bytes = Encoding.Convert(unicode, myEncode, unicodeBytes);
                char[] utf8Chars = new char[myEncode.GetCharCount(ut8Bytes, 0, ut8Bytes.Length)];
                myEncode.GetChars(ut8Bytes, 0, ut8Bytes.Length, utf8Chars, 0);
                string utfString = new string(utf8Chars);
                e.Value = utfString;
                e.FormattingApplied = true;
        
            }
       }

Собсна что приходит в функцию, то из неё и выходит, что я упустил? Буду безмерно благодарен если поможите

Автор: sCreator 19.10.2010, 20:40
Цитата(starostin @  15.10.2010,  15:53 Найти цитируемый пост)
делали её до меня так что я с этим ничё поделать не могу

А почему не можете?
С помощью pg_dump.exe можно сделать бекап базы в текстовый файл в виде SQL скриптов. Поменять кодировку, создать новую базу в нужной кодировке и залить ее из бекапа например с помощью pgsql.exe. ( точные параметры командной строки сейчас уже не помню )

Автор: starostin 27.10.2010, 10:31
а опытом это проверено? не внесёться ли в новую базу с другой кодировкой, всё такой же ахинеей как и выводиться в моём приложении

Автор: jonie 27.10.2010, 13:20
так вы конвертируете UTF-16 to UTF-8 чтоб вы хотели...

Ниже пример чтения файла в KOI8-R
Код

 using (var fs = new FileStream(@"c:\temp\koi8text.txt", FileMode.Open))
            {
                using (TextReader tr = new StreamReader(fs, Encoding.GetEncoding(20866)))
                {
                    string line = tr.ReadLine();
                    Console.WriteLine("{0}", line);
                }
            }

вам надо делать точно так же (в плане Encoding.GetEncoding....)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)