Zamiana stringa na Cyrylice

0

Mam taki string řâĺäńęčé ( niby jest to po rosyjsku ) jak go zamienić na cyrylice? Probowałem zmienić kodowanie ale nic mi nie wychodzi nie wiem co z tym zrobic.

            string str = "řâĺäńęčé";           
            Encoding srcEncodingFormat = Encoding.Unicode;
            Encoding dstEncodingFormat = Encoding.GetEncoding("windows-1251");
            byte[] originalByteString = srcEncodingFormat.GetBytes(str);
            byte[] convertedByteString = Encoding.Convert(srcEncodingFormat,
            dstEncodingFormat, originalByteString);
            string finalString = dstEncodingFormat.GetString(convertedByteString);

            Console.WriteLine(finalString);
            Console.ReadLine();
 
0

Skąd pobierasz tego stringa? Problem jest wcześniej, w momencie gdy wczytałeś stringa. Jak już masz tak skaszanionego, to za późno na kombinowanie z kodowaniem.

0

Pobieram z pliku który dostarczony jest przez pewna firmę, teoretyczne plik jest poprawny ja nie jestem tego pewien na 100%, plik otwieram w notatniku przy każdym kodowaniu string jest taki sam.

0

Jednak tylko w utf-8 i ANSI COS SIE WYSWIETLA

0

Kodowanie musisz podawać w momencie ładowania pliku.
Np.

string[] text = File.ReadAllLines("plik.txt", Encoding.GetEncoding(1251));

zakładając, że tekst jest w CP1251.

0

Dzieki pomogło teraz jak odczytuje to jest cyrylica, ale w sumie wartosci mam odczytywać z bazy danych ( gdy to odczytywałem miałem taki sam problem jak z plikiem txt), możesz mi jeszcze na szybko wyjasnic ( fragment kodu gdy ) jak odczytac z bazy danych poprawnie to? Jak w momencie przypisywania wartosci z bazy danych do string podawac kodownie?

0
/// <summary>
        /// Funkcja zwraca wynik zapytania w postaci obiektu DataTable
        /// </summary>
        /// <param name="cmdString"></param>
        /// <returns></returns>
        public DataTable GetTableQuery(string cmdString)
        {
            OleDbConnection con = new OleDbConnection(connectionstring);
            OleDbCommand cmd = new OleDbCommand(cmdString, con);
            OleDbDataAdapter adapter = new OleDbDataAdapter(cmd);

            DataTable dataTable = new DataTable();
            adapter.Fill(dataTable);

            return dataTable;
        }
DataTable tab = xxx.GetTableQuery("select col1 from tab1");
List<string> lista = new List<string>();
foreach(DataRow dr in tab.Rows)
{
lista.add(dr["col1"]).ToString();
}
0

Baza danych oracle

0

Prawdę mówiąc nie wiem czy wogólę się da uzyskać cyrylice bo z tego co wiem podczas importu do bazy danych z pliku ustawiane było kodowanie na 1250.

0

Nie wiem jak sobie z tą bazą poradzisz. W każdym razie jeśli uda ci się pobrać tekst w postaci tablicy bajtów to zdekodować możesz je za pomocą Encoding.GetString.

Jeśli w bazie byłoby ustawione odpowiednie kodowanie to tak jak to robisz teraz powinno (chyba) zadziałać czyli metoda ToString wywołana na dr["col1"] powinna być OK.

0

Wina jest po stronie bazy. Jeśli masz na nią wpływ, to musisz ją poprawić.

1 użytkowników online, w tym zalogowanych: 0, gości: 1