Django <-> SQL Server 2005, text encoding problem

前端 未结 3 1832
轮回少年
轮回少年 2021-01-13 02:46

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 consi

相关标签:
3条回答
  • 2021-01-13 02:57

    We use Django with SQL Server 2005. We found the same problem you did.

    What ODBC driver are you using? FreeTDS?

    We tried finding a good ODBC driver for linux/unix to use that would not throw the error above (and others) when unicode would come into play - and failed miserably. None of the drivers we tested - at least three, I can dig the names up if you would like - had any success in dealing with unicode strings via django-pyodbc.

    What we ended up doing, sad as it might sound, was to decide to run Django on a Windows server (Apache + mod_wsgi) and use the Microsoft's SQL Native ODBC driver.

    It works just fine - unicode wise - when we do that.

    0 讨论(0)
  • 2021-01-13 03:00

    in addition to the accepted response, it is possible to fix this error dirrectly in the settings.py :

    DATABASES = {
        'default': {
            'ENGINE': 'sql_server.pyodbc',
            'NAME': 'MyTableName',
            'HOST': r'server.lan\server_instance_name',
            'USER': 'sa',
            'PASSWORD': 'P@SsW0Rd',
            'OPTIONS': {
                'host_is_server': True,
                "extra_params":"TDS_Version=8.0;ClientCharset=UTF-8",
                "autocommit": True,
                "driver_needs_utf8":True,
            },
    
         }
    }
    

    take a look at the extra_params

    this don't rely on the global freetds.conf file, so it is better

    0 讨论(0)
  • 2021-01-13 03:10

    OK, the solution was found. In file freetds.conf there is

    client charset = UTF-8
    

    and it works exactly like it should.

    0 讨论(0)
提交回复
热议问题