Я переношу db из mysql в postgresql. Значение mysql db по умолчанию - UTF8, postgres также использует UTF8, и я кодирую данные с помощью pg_escape_string(). По какой-то причине, однако, я сталкиваюсь с некоторыми фанковыми ошибками о плохой кодировке:
pg_query() [function.pg-query]: Query failed: ERROR: invalid byte sequence for encoding "UTF8": 0xeb7374
HINT: This error can also happen if the byte sequence does not match the encoding expected by the server, which is controlled by "client"
Я уже пытался понять это и заметил, что php делает что-то странное; если в строке есть только символы ascii (например, "hello" ), кодировка ASCII. Если строка содержит любые символы не ascii, она говорит, что кодировка UTF8 (например, "Hëllo" ).
Когда я использую utf8_encode() для строк, которые уже являются UTF8, он убивает специальные символы и заставляет их перепутаться, поэтому... что я могу сделать, чтобы заставить это работать?
(точный char висит на нем сейчас "", но вместо того, чтобы просто искать/заменять, я хотел бы найти лучшее решение, чтобы эта любопытная проблема не повторялась)