2014-09-17 18 views

Odpowiedz

15

Po pierwsze muszę powiedzieć, że nie używam MySQL ale wiem o ODBC Drivers. W ODBC istnieją różne interfejsy API dla unicode i ansi. Interfejsy API ansi kończą się literą A, a interfejsy API unikodu kończą się literą W (np. SQLPrepareA i SQLPrepareW). Interfejsy API ansi akceptują bajty/oktety dla ciągów znaków i dlatego mogą obsługiwać tylko chrs 0-255. Interfejsy API Unicode akceptują SQLWCHAR, które są 2 bajtowymi kodami UCS-2 kodowanymi w standardzie Unicode (nowsze wersje MS SQL Server mogą obsługiwać zakodowane ciągi UTF16), dzięki czemu mogą obsługiwać około pierwszych 65000 punktów kodowych w kodzie Unicode.

Jeśli więc chcesz przechowywać dane w Unicode, nie masz wyboru, którego sterownika użyć.

Nie pozwolę, aby komentarze na temat prędkości od Carnangel zniechęciły cię do używania sterownika Unicode, aw każdym razie jego komentarze nie zawierają żadnych faktów. Może on odnosić się do:

Jeśli przechowujesz dane Unicode w MySQL, będzie on kodowany w UTF-8 i przesyłany przez twoją sieć jako UTF-8. Na końcu klienta sterownik ODBC będzie musiał przekonwertować zakodowane dane UTF-8 na UCS-2, ponieważ jest to wymagane przez ODBC. Oczywiście ma tu zastosowanie odwrotne.

Jeśli napiszesz aplikację ANSI ODBC (czyli taką, która używa api ODBC ansi) ze sterownikiem ODBC Unicode, menedżer sterownika ODBC będzie musiał przekonwertować UCS-2, a sterownik powróci do 8 bitów (stratny) i zamień 8-bitowe dane przekazywane do sterownika na UCS-2. Więc nie rób tego.

W dzisiejszych czasach byłbym zaskoczony, gdyby ktoś nadal używał sterowników ANSI ODBC.

3

Jak wiadomo, Ansi i Unicode są stosowane do typu znaków danych. Możesz wybrać jeden lub drugi, to nie jest procesor Tutaj jest różnica między nimi: - Unikod pozwala na włączenie wszystkich właściwości znaków, ale redukując surową obróbkę prędkości - Ansi, przeciwnie, mniej znaków typ, ale szybkość przetwarzania przyspieszy

Jeśli jesteś nowym użytkownikiem, weź ten kod Unicode, jeśli nie, możesz wybrać ten.

Mam nadzieję, że masz punkt;)

+0

co to jest nieprzetworzona prędkość? –

+0

Zasadniczo jest to czas czytania danych, a przez to pojawiania się dat danych. Załóżmy, że masz 2 projekty: w którym że masz dwie tabele ze stosunkowo niewielu danych Drugi, w którym znajduje się 50 stołów i wielu dane teleadresowe Jeśli zarówno w przypadkach zrobisz „select * from "table" " -pierwszy odczyt danych jest naprawdę szybki (duża prędkość) - Druga zajmuje więcej czasu, aby odczytać dane tabeli (mniej surowa prędkość) – Carnangel

Powiązane problemy