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
Вы должны добавить...