Orm 推进/Sybase将重音显示为正方形

Orm 推进/Sybase将重音显示为正方形,orm,character-encoding,sybase,propel,latin1,Orm,Character Encoding,Sybase,Propel,Latin1,我正在使用ORM Propel与来自Zend Framework webapp的Sybase ASE 15.7数据库进行交互。当我执行sp_helpsort时,我的Sybase服务器似乎使用拉丁1编码 我意识到我的数据库中的口音(当我通过像Toad for Sybase这样的客户端连接时会正确显示)在我的网页上显示为正方形。如果我通过一个JSON对象传递这样的数据,字符串将完全消失,如果有重音符号,字符串将变为null。所有JSON对象都使用UTF-8字符集设置(返回内容类型为applicati

我正在使用ORM Propel与来自Zend Framework webapp的Sybase ASE 15.7数据库进行交互。当我执行
sp_helpsort
时,我的Sybase服务器似乎使用拉丁1编码

我意识到我的数据库中的口音(当我通过像Toad for Sybase这样的客户端连接时会正确显示)在我的网页上显示为正方形。如果我通过一个JSON对象传递这样的数据,字符串将完全消失,如果有重音符号,字符串将变为null。所有JSON对象都使用UTF-8字符集设置(返回内容类型为
application/JSON;字符集=UTF-8

我试图通过将服务器的字符集和排序顺序更改为UTF-8来解决此问题,现在
sp\u helpsort
清楚地显示它正在使用UTF-8:

排序顺序说明


字符集=190,utf8 Unicode 3.1 UTF-8字符集 第2类字符集 排序顺序=25,二进制 UTF-16的二进制排序 (返回状态=0)

我再次尝试,使用新的数据来确保我没有使用以前的拉丁语编码文本,我仍然有同样的问题

如果我通过一个用UTF-8设置的JSON对象传递数据,如何确保数据被正确恢复并且不会受到影响


提前感谢您的建议。

我找到了解决问题的办法。这个问题似乎是由我用来连接Sybase数据库的驱动程序引起的:ODBC。 问题是告诉ODBC它在客户端使用UTF-8,这样Sybase就可以在返回内容之前转换内容,如果它使用另一个字符集的话

通过将这些参数添加到ODBC连接字符串中,我成功地获得了要显示的重音符号:
Charset=utf8;KeepOrgMultibyte=1

资料来源: