PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jak przekonwertować ciąg znaków na Unicode za pomocą PostgreSQL?

Bazy danych PostgreSQL mają natywny typ znaków, "kodowanie serwera". Zwykle jest to UTF-8.

Cały tekst jest w tym kodowaniu. Mieszane kodowanie tekstu nie jest obsługiwane, chyba że jest przechowywane jako bytea (tj. jako nieprzezroczyste sekwencje bajtów).

Nie można przechowywać ciągów „unicode” lub „non-unicode”, a PostgreSQL nie ma pojęcia „varchar” vs „nvarchar”. W przypadku utf-8 znaki mieszczące się w 7-bitowym zakresie ASCII (i kilka innych) są przechowywane jako pojedynczy bajt, a szersze znaki wymagają więcej pamięci, więc jest to po prostu automatyczne. Utf-8 wymaga więcej miejsca niż ucs-2 lub utf-16 dla tekstu, który składa się wyłącznie ze znaków „szerokich”, ale mniej dla tekstu, który jest mieszanką.

PostgreSQL automatycznie konwertuje do/z kodowania tekstu klienta, używając client_encoding ustawienie. Nie ma potrzeby jawnej konwersji.

Jeśli Twoim klientem jest „Unicode” (co produkty firmy Microsoft zwykle mówią, gdy mają na myśli UCS-2 lub UTF-16), to większość sterowników klienta zajmuje się każdą konwersją utf-8 <--> utf-16.

Więc nie powinieneś się tym przejmować, o ile twój klient wykonuje I/O z poprawnymi opcjami zestawu znaków i ustawia poprawne client_encoding który pasuje do danych, które faktycznie wysyła przez przewód. (Jest to automatyczne w przypadku większości sterowników klienckich, takich jak PgJDBC, nPgSQL lub sterownik Unicode psqlODBC).

Zobacz:




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nie można uruchomić postgresql.service?

  2. Instalowanie Postgresa w systemie Windows do użytku z Ruby-on-Rails

  3. Pętle PostgreSQL poza funkcjami. Czy to jest możliwe?

  4. Jak mogę rozwiązać problem z integralnością pola, które nie istnieje?

  5. initdb:inicjalizacja pg_authid ... FATAL:nieprawidłowa liczba wyrażeń indeksu