Django< SQL Server 2005,文本编码问题 [英] Django <-> SQL Server 2005, text encoding problem

查看:277
本文介绍了Django< SQL Server 2005,文本编码问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述



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&lt; SQL Server 2005,文本编码问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆