最近,当我尝试在数据库中插入一些俄语西里尔文本时,我遇到了一些问题。我在框架symfony2上,我使用的是Doctrine ORM和一个Nginx Web服务器。该数据库是PostgreSql。有时当我尝试在列中插入俄语文本时会出现问题,我收到此消息的500内部服务器错误:
SQLSTATE[22021]: Character not in repertoire: 7 ERREUR: invalid byte sequence for encoding « UTF8 » : 0xd1
最奇怪的是发生在一个列而不是另一个具有相同字符串...我的php文件和数据库在UTF8中正确编码。
是否有人遇到过同样的问题并实现解决?非常感谢您的帮助。
来自psql的\ l请求显示编码UTF8和Collate和Ctype fr_FR.UTF-8
server_encoding UTF8
client_encoding UTF8
答案 0 :(得分:0)
基于显示的内容,如果该错误仅在一个列中具有相同的另一个字符串,那么我认为您需要确保提供错误的列具有正确的排序规则,因为问题肯定与由Character not in repertoire: 7 ERREUR: invalid byte sequence for encoding « UTF8 » : 0xd1
引起的Ctype fr_FR.UTF-8
因为fr_FR
的字节范围与西里尔字母不同。
我在mysql数据库中管理西里尔字符,所有表格/校对用 utf-8 unicode (或一般)编码。
希望这有帮助。