W projekcie pracuję nad danymi są przechowywane w SQL Server, z sortowaniem Danish_Norwegian_CI_AS
. Dane są wysyłane przez FreeTDS i ODBC, do Pythona, który obsługuje dane jako UTF-8. Niektóre postacie, takie jak å, ø i æ, nie są poprawnie kodowane, co powoduje, że postępy projektu zostają zatrzymane.Czy możliwe jest sortowanie konwersji SQL Server do UTF-8/UTF-16
Spędziłem kilka godzin czytając o zagmatwanym świecie kodowania, zestawiania i stron kodowych i poczułem się, jakbym lepiej zrozumiał cały obraz.
Niektóre artykuły, które przeczytałem, pozwala mi sądzić, że można: W instrukcji SQL select określić, że dane o sortowaniu powinny być zakodowane do UTF-8, gdy są wyprowadzane.
Powodem, dla którego myślę, że to możliwe, jest this article, który pokazuje przykład, jak dostać się do stołów, z różnymi sortowaniami, aby dobrze grać razem.
Wszelkie wskaźniki w kierunku konwersji sortowania na UTF-8/UTF-16, byłyby bardzo mile widziane!
EDIT: Przeczytałem, że SQL Server udostępnia opcję Unicode przez nchar
, nvarchar
i ntext
, i że pozostałe zmienne łańcuchowe char
, varchar
i text
są kodowane zgodnie ustawić sortowanie. Przeczytałem również, że wyżej wymienione opcje Unicode są kodowane w wariancie utcs-16 ucs-2 (mam nadzieję, że pamiętam to dobrze). Więc; w celu umożliwienia tabelom sortowania locale i unicode, aby grać ładnie, powinna istnieć funkcja konwersji, nie?
mając podobny problem z użyciem mySQL i jdbc, to rozwiązało mój problem. tworzenie tabel przy użyciu 'create table a (.....) DEFAULT CHARSET = utf8;' i łączenia się z bazą danych za pomocą '' "jdbc: mysql: // localhost/testDb? useUnicode = true & characterEncoding = UTF-8"; ' więc zakładam, że musi istnieć sposób z serwerem MS SQL sever –
@SkarosIlias Dziękujemy za twój wkład. Niestety, tabela jest już utworzona i wypełniona, więc nie jest to opcja dla mnie. – Rookie
spróbuj z nową tabelą i wstaw niektóre dane testowe, aby upewnić się, że to działa. jeśli robi to 'alter table' –