Django< SQL Server 2005,文本编码问题 [英] Django <-> SQL Server 2005, text encoding problem
问题描述
http://code.google.com/p/django-pyodbc/
(pyodbc + FreeTDS)
只要我存储字符串由ASCII字符组成,一切都可以。
当我使用unicode(例如'\xc5\x82')时,django会抛出ProgrammingError:
ProgramError at / admin / cli / punktrejestracji / add /
('42000','[42000] [FreeTDS] [SQL Server]输入的表格数据流(TDS)协议流不正确, (4002)(SQLExecDirectW)')
跟踪的最后一个元素是:
params('\xc5\x82',)
self< django.db.backends.sql_server.pyodbc.base.CursorWrapper对象在0x92ef8ec>
sql'SELECT(1)AS [a] FROM [cli_punktrejestracji] WHERE [cli_punktrejestracji]。[adres] =? '
BTW http://code.google.com/p/django-mssql/ 似乎没有在Linux下工作,
django-mssql需要pythoncom库。我是对的吗?
确定,解决方案被发现。在freetds.conf文件中有
客户端字符集= UTF-8
pre>
,它的工作原理就如此。
I'm trying to store Django data on MS SQL Server 2005 using:
http://code.google.com/p/django-pyodbc/ (pyodbc + FreeTDS)
As long as I'm storing string consist of ASCII characters everything is ok. When I'm using unicode (ex. '\xc5\x82'), django throws ProgrammingError on:
ProgrammingError at /admin/cli/punktrejestracji/add/ ('42000', '[42000] [FreeTDS][SQL Server]The incoming tabular data stream (TDS) protocol stream is incorrect. The stream ended unexpectedly. (4002) (SQLExecDirectW)')
last element of trace is:
params ('\xc5\x82',) self <django.db.backends.sql_server.pyodbc.base.CursorWrapper object at 0x92ef8ec> sql 'SELECT (1) AS [a] FROM [cli_punktrejestracji] WHERE [cli_punktrejestracji].[adres] = ? '
BTW http://code.google.com/p/django-mssql/ doesn't seems to work under Linux, django-mssql needs pythoncom library. Am I right?
解决方案OK, the solution was found. In file freetds.conf there is
client charset = UTF-8
and it works exactly like it should.
这篇关于Django< SQL Server 2005,文本编码问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!