Witam mam problem z rezultatami w sql. Wykonuje zapytanie i w jednej z kolumn z wynikiem zapytania wyświetla mi System.Byte[] zamiast konkretnej wartości. Wynik zapisuje do pliku. Wie ktoś co może być przyczyną ?
Wynik jest adekwatny do tego:
var bytes = new byte[10];
var bytesAsString = bytes.ToString();
Console.WriteLine(bytesAsString);
W konsoli zobaczysz właśnie System.Byte[]
.
Problem rozwiązany mam jeszcze pytanko. Po wykonaniu zapytania i wyciągnięciu danych z bazy giną polskie znaki. Gdzie tkwi błąd ? Jakiego kodowania trzeba używać.
Takiego kodowania jakiego używa baza, albo przekonwertowania z kodowania jakiego używa baza, na takie którego używa UI
Czyli w bazie danych w polu o wartościach byte nie może być łańcuchów znakowych bo inaczej .net wyświetli takie coś jak ten System.Byte[]
Nie. Zupełnie nie rozumiesz tematu.
System.Byte[]
bierze się z tego, że jeżeli obiekt nie ma przeładowanej wersji ToString()
, to użyje wersji z System.Object, która zwraca po prostu pełną nazwę obiektu.
Nie wiem co rozumiesz przez "pole o wartościach byte", ale generalnie łańcuch znaków to nic innego jak ciąg bajtów. Wszystko w informatyce ostatecznie sprowadza się do bajtów, a nawet bitów :P.
Jeżeli chcesz z bajtów uzyskać tekst, to robisz to przykładowo tak:
var bytes = new byte[]{ ..... };
var s = Encoding.UTF8.GetString(bytes);
Przy założeniu, że kodowanie to UTF-8
usm_auriga napisał(a):
Czyli w bazie danych w polu o wartościach byte nie może być łańcuchów znakowych bo inaczej .net wyświetli takie coś jak ten System.Byte[]
Pokaż jak wyciągasz te dane, bo mam wrażenie, że nie rozumiesz co robisz.