Я работал с Postgresql с C++ и пытался вставить символ юникода αβγδεζηθ.
Запустил запрос вставки в некоторой таблице базы данных и обнаружил, что "θ" не поддерживается символом.
Для этого я запускаю gdb. для этого символа, то есть "θ", он демонстрирует характерный характер.
Примечание: 1. Я использую C++ для запуска этой команды. и это не сохраняет это значение. 2. База данных является UTF8-совместимым, потому что, когда я удаляю этот запрос "θ", запрос на ввод успешно завершен.
Да, PostgreSQL поддерживает θ
, символ U+03b8
Greek Small Letter Theta, как в unicode escape, так и в буквальной форме:
regress=> SELECT 'θ', E'\u03b8';
?column? | ?column?
----------+----------
θ | θ
(1 row)
Предполагая, что ваша кодировка базы данных или клиентская кодировка не поддерживают ее или, скорее всего, с учетом вашего упоминания о "тарабарщике", ваш client_encoding
не соответствует кодировке данных, которые вы фактически отправляете.
Проверьте кодировку базы данных с помощью \l
в psql или SHOW server_encoding;
, Получить клиентскую кодировку с помощью SHOW client_encoding;
от клиентского соединения с проблемой.
Я бы сказал, что вы, вероятно, отправляете данные UTF-8 или UTF-16 на сервер, но сообщая серверу iso-8859-1 или windows-1252 или наоборот. Хотя θ
не входит в эти кодировки; вы должны использовать что-то еще или отправлять данные, которые уже искажены другим недопустимым преобразованием, прежде чем попасть в PostgreSQL.
Было бы полезно, если бы вы показали: