2013-04-17 25 views
17

Mam tabeli w mojej bazy danych i chcę uruchomić kwerendę jakwyjście Konwersja zapytania MySQL utf8

SELECT column1, column2 FROM my_table WHERE my_condition; 

ale chcę mysql zwrócić column2 w kodowaniu utf8. Czy jest to jakaś funkcja w mysql do wykonywania takich zadań? Co to jest?

+1

Wypróbuj 'WYBIERZ kolumnę1, KONWERTUJ (kolumna2 KORZYSTAJCIE z ut8) ...' –

Odpowiedz

34

Możesz używać CAST i CONVERT, aby przełączać się między różnymi typami kodowań. Zobacz: http://dev.mysql.com/doc/refman/5.0/en/charset-convert.html

SELECT column1, CONVERT(column2 USING utf8) 
FROM my_table 
WHERE my_condition; 
+1

Znacznie lepsza odpowiedź niż gdzie indziej. Oficjalna dokumentacja odpowiedzi na to pytanie to kompletny żart: "SELECT CAST (_latin1'test" AS CHAR CHARACTER SET utf8) " Dlaczego nie dodać jeszcze kilku błędnych symboli do nazwy zmiennej ??? – HoldOffHunger

8
SELECT CONVERT(CAST(column as BINARY) USING utf8) as column FROM table 
+0

Dzięki, że zapisałeś mój dzień :) –

+0

Dzięki! Uratuj mój dzień! – Portekoi

2

Dodatek:

Podczas korzystania z biblioteki klienta MySQL , to należy zapobiec konwersji z powrotem do domyślnego kodowania Twojego Połączenie za. (Patrz mysql_set_character_set()[1])

W tym przypadku należy użyć dodatkowej obsady na binarny:

SELECT column1, CAST(CONVERT(column2 USING utf8) AS binary) 
FROM my_table 
WHERE my_condition; 

przeciwnym razie oświadczenie SELECT zamienia na UTF-8, ale biblioteka klient konwertuje go z powrotem do (potencjalnie inna) domyślny zestaw znaków połączenia.