UTF-8 в Джанго, Умлаутс, до сих пор работают с данными из SQL Server

Моя проблема заключается в следующем: я сделал страницу с данными клиентов из базы данных SQL Server. моя веб-страница utf-8... что я вижу:

редактировать: невозможно отобразить изображения, если я новый пользователь... ^^

в первом "{{ row_1 }}" вы видите W\xe4denswil, но в таблице он не отображается. но почему? и кроме того, это должен быть Wädenswil (с немецким умлаутом). Я много чего пробовал, чтобы сделать свое сырье, используя utf-8. моя последняя попытка была такая:

row_1 = Unicode(cursor.fetchall(), 'utf-8')

но это означает "принуждение к Unicode: нужна строка или буфер, список найден"

Вот мой используемый код (взгляды из Django):

  conn = pyodbc.connect('DRIVER={SQL Server};CHARSET=UTF8;SERVER=MAURITIUS;DATABASE=baan5c;UID=portal;PWD=P0rtalReader')
    cursor = conn.cursor()
    cursor.execute("SELECT d.t_bpid, d.t_nama, a.t_namc, a.t_hono, a.t_pstc, a.t_name FROM ttccom100070 d, ttccom130070 a WHERE d.t_cadr = a.t_cadr AND (d.t_bpid = '%s')"%form)
    rows_1 = unicode(cursor.fetchall(), 'utf-8')

  return render_to_response('kundendaten.html', { 'rows_1': rows_1, 'rows_2': rows_2, 'rows_3': rows_3, 'current_date': now, 'form':form}, context_instance=RequestContext(request))

а вот мой html...

<h2>Customer Data</h2>


{{ rows_1 }}
</fieldset>

<fieldset class= "field1">
<table border="1" class="name">
    <tr>
        <th colspan="6">Customer Overview</th>
    </tr>
    <tr>
        <th class="CUSCos">Customer Number</th>
        <th class="CUSNam">Name</th>
        <th class="CUSStr">Street</th>
        <th class="CUSNr">Number</th>
        <th class="CUSZip">Zip Code</th>
        <th class="CUSCit">City</th>
    </tr>
    {% for row in rows_1 %}
    <tr>
        <td>{{ row.0 }}</td>
        <td>{{ row.1 }}</td>
        <td>{{ row.2 }}</td>
        <td>{{ row.3 }}</td>
        <td>{{ row.4 }}</td>
        <td>{{ row.5 }}</td>
    </tr>
    {% endfor %}
</table>

Я использую win7 32bit, python 2.7.3, django 1.4.1, html5 и css3

1 ответ

Решение

Я нашел решение. Это было очень легко, потому что у pyodbc есть функция для этого. Правильная строка сейчас:

conn = pyodbc.connect ('DRIVER = {SQL Server}; CHARSET = UTF8; SERVER =% s; DATABASE =% s; UID =% s; PWD =% s'% (x, y, w, p), unicode_results = True)

Это только это:

, unicode_results = True

Вы должны добавить...

Другие вопросы по тегам