2015-06-22 20 views
0

我使用ORM Propel与来自Zend Framework Web应用程序的Sybase ASE 15.7数据库进行交互。当我做sp_helpsort我的Sybase服务器似乎在使用Latin-1编码。Propel/Sybase将方格显示为口音

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

我试图通过改变字符集来解决这个问题,并整理我的服务器以UTF-8,现在sp_helpsort清楚地表明它使用UTF-8:

排序说明


字符集= 190,UTF8 的Unicode 3.1 UTF-8字符集 第2类字符集 排序顺序= 25,对于UTF-16 二进制 二进制排序(返回小号tatus = 0)

我再次尝试,使用新的数据,以确保我不使用前Latin1编码文本,我仍然有同样的问题。

如何通过使用UTF-8设置的JSON对象来确保数据正确恢复并不会受到影响?

非常感谢您的建议。

回答

0

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

我设法口音通过将这些参数来我的ODBC连接字符串显示:Charset=utf8;KeepOrgMultibyte=1;

来源:https://groups.google.com/d/msg/f3-framework/o5dvvsMCR4c/4-b0ZoSFWKgJ