...So, eine nacht später und etwas abgeregt... Am Samstag 27 Dezember 2003 02:56 schrieb Uwe Schmitt:
die Codierung gerade eindeutig ist oder nicht. Das Leben mit Python
währe um einiges einfacher, wenn ein Unicode-String eine Klasse (bzw. Typ) währe.
aber unicode-strings sind doch ein typ/klasse in python...
xml-string = "" #was habe ich jetzt UNICODE oder ASCII ? xml_string = socket_objekt.empfangen() #was habe ich jetzt UNICODE oder ASCII ? sql_query = patser_objekt.run(xml_string) #was habe ich jetzt UNICODE oder ASCII ? antwort = psql_objekt.query(sql_query) #was habe ich jetzt UNICODE oder ASCII ? interaktions_string = Tkinter_gui_dialog.run(antwort) #was habe ich jetzt UNICODE oder ASCII ? Am Samstag 27 Dezember 2003 00:40 schrieb Stefan Schwarzer:
Sollte das blauäugig klingen, liegt es einfach daran, dass ich zu wenig über dein Programm weiß. ;-) Nach deiner Beschreibung vermute ich jedenfalls eher ein Design-Problem, und nicht so sehr, dass der Umgang mit Unicode in Python notwendigerweise ekelhaft sein muss.
Volgende Funktion hat ein UNICODE-Fehler produzirt: def _projekt_report(eltern_objekt, \ project_title, \ rekursiv, \ mit_stammdaten_von, \ epoch_begin, \ epoch_end, \ ausgabeformat): latex_code = "" latex_code += "\\section{Projektziel}\n" if project_title != "Dachprojekt": latex_code += "Das Projekt ist abgeleitet von dem Projekt \\glqq " test_str = "" latex_code += test_str.encode("Latin-1") eltern_projekt = db_querys.get_parent_from(eltern_objekt, project_title) latex_code += _sonderzeichen_behandlung(eltern_projekt) projekt_id = db_querys.get_id_from_project(eltern_objekt, project_title) latex_code += " \\grqq{} (Projekt-ID: " + str(projekt_id) + ") \n \\\\ \n \\\\" latex_code += "Das Projektziel war wie folgt formuliert: " projekt_ziel = db_querys.get_project_conception(eltern_objekt, project_title) latex_code += _sonderzeichen_behandlung(projekt_ziel) latex_code += " \n" #return latex_code dagesdatum = unix_time.Unix_Time() # die Tagesdoku dict_list = db_querys.get_docu_epoch(eltern_objekt, project_title, epoch_begin, epoch_end) if len(dict_list) > 0: latex_code += "\\section{Tagesdokumentation}\n" for dic_tages_doku in dict_list: latex_code += "\n \\subsubsection{" dagesdatum.set_sekunden(dic_tages_doku['datum']) latex_code += dagesdatum.get_nice_string() latex_code += "geschrieben von " mittarbeiter_id = dic_tages_doku['mittarbeiter_id'] log_name = db_querys.get_logname(eltern_objekt, mittarbeiter_id) log_name = _sonderzeichen_behandlung(log_name) real_name = db_querys.get_realname(eltern_objekt, mittarbeiter_id) real_name = _sonderzeichen_behandlung(real_name) latex_code += real_name + "(" + log_name + ")}\n" latex_code += _sonderzeichen_behandlung(dic_tages_doku['tages_doku']) # ToDo's dict_list = db_querys.get_todo_epoch(eltern_objekt, project_title, epoch_begin, epoch_end) if len(dict_list) > 0: latex_code += "\\section{Erledigte Aufgaben}\n" for dic_todo_doku in dict_list: latex_code += "\n\\subsubsection{" dagesdatum.set_sekunden(dic_todo_doku['datum']) latex_code += dagesdatum.get_nice_string() latex_code += "erledigt von " mittarbeiter_id = dic_todo_doku['mittarbeiter_id'] log_name = db_querys.get_logname(eltern_objekt, mittarbeiter_id) log_name = _sonderzeichen_behandlung(log_name) real_name = db_querys.get_realname(eltern_objekt, mittarbeiter_id) real_name = _sonderzeichen_behandlung(real_name) latex_code += real_name + "(" + log_name + ")} \n" latex_code += "\emph{ Zusammenfassung: }" latex_code += _sonderzeichen_behandlung(dic_todo_doku['zusammenfassung']) + " \\\\ \n" latex_code += unicode("\emph{ Erg�zung: }","latin-1") #^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ # Hopla! wieso muste ich hier expliziet "unicode" ? latex_code += _sonderzeichen_behandlung(dic_todo_doku['beschreibung']) # Checklisten all_name_of_checkpoint = db_querys.get_checklist_from(eltern_objekt, project_title) if len(all_name_of_checkpoint) > 0: # gibt es berhaubt eine Checkliste latex_code += "\\section{Checkliste(n)}\n" for checkpoint in all_name_of_checkpoint: latex_code += "\\subsection{ \glqq " + checkpoint + "\grqq{} }\n" latex_code += "\\begin{center} \n" latex_code += "\\begin{longtable}{|l|l|l|}" latex_code += "\\hline \n" latex_code += "Datum & Zeitdifferenz & Login-Name" latex_code += "\\\\ \\hline \\hline \n" dict_list = db_querys.get_checkpoint_epoch(eltern_objekt, project_title, checkpoint, epoch_begin, epoch_end) if len(dict_list) > 0: # wurden Eintragungen gemacht zu dem Checkpoint letztes_datum = unix_time.Unix_Time() for dic_check_doku in dict_list: mitarbeiter_id = dic_check_doku['mittarbeiter_id'] logname = db_querys.get_logname(eltern_objekt, mitarbeiter_id) logname = _sonderzeichen_behandlung(logname) datum = unix_time.Unix_Time() datum.set_sekunden(dic_check_doku['datum']) diff_time = unix_time.Unix_Time() diff_time.set_sekunden(0) if letztes_datum.get_sekunden_int() != 0: # ist das nicht der erste eintrag # rechne differenz aus diff_sek = datum.get_sekunden_int() - letztes_datum.get_sekunden_int() diff_time.set_sekunden(datum.get_sekunden_int() - letztes_datum.get_sekunden_int()) latex_code += datum.get_nice_string() + " & " latex_code += diff_time.get_tag_s_m_str() + " & " latex_code += logname latex_code += "\\\\ \\hline \n" letztes_datum.set_sekunden(datum.get_sekunden_int()) latex_code += "\\end{longtable} \n" latex_code += "\\end{center} \n" # Abschlussbericht projekt_status = db_querys.get_project_status(eltern_objekt, project_title) if projekt_status == "p": # ist das Projekt abgeschlossen... latex_code += "\\section{Abschlussbericht}\n" dict_list += db_querys.get_abschlussbericht(eltern_objekt, project_title) if len(dict_list) > 0: # wurden Eintragungen gemacht zu dem Checkpoint for abschluss_dict in dict_list: latex_code += "\\emph{Geschrien von" mitarbeiter_id = abschluss_dict['mittarbeiter_id'] logname = db_querys.get_logname(eltern_objekt, mittarbeiter_id) logname = _sonderzeichen_behandlung(logname) real_name = db_querys.get_realname(eltern_objekt, mittarbeiter_id) real_name = _sonderzeichen_behandlung(real_name) latex_code += real_name + " (" + logname + ") am " datum = unix_time.Unix_Time() datum.set_sekunden(abschluss_dict['datum']) latex_code += datum.get_nice_string() + "} \\\\ \n" latex_code += _sonderzeichen_behandlung(abschluss_dict['bericht']) return latex_code.encode("Latin-1") #^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ # und hier muste ich wieder "encode" mit das Risulat eindeutig # für den entfänger ist. ######################################################## #################### der Empfänger: ###################### def get_report( eltern_objekt, \ project_title, \ rekursiv, \ mit_stammdaten_von, \ epoch_begin, \ epoch_end, \ ausgabeformat): conf = eltern_objekt.get_conf() report_begin = unix_time.Unix_Time() report_begin.set_sekunden(epoch_begin) report_ende = unix_time.Unix_Time() report_ende.set_sekunden(epoch_end) if _ist_zugriff_von_ip_erlaubt(eltern_objekt) == 0: return "<error>keine ausreichende Ber�htigung!</error>" # Vorspann latex_code = "% Diese datei wurde automatisch von GNUSWork generiert \n\n" latex_code = "\\documentclass[10pt,a4paper]{article}\n" latex_code += "\\usepackage[latin1]{inputenc}\n" latex_code += "\\usepackage{german}\n" latex_code += "\\usepackage{pslatex}\n" latex_code += "\\usepackage{rotating}\n" latex_code += "\\usepackage{longtable}\n" latex_code += "\\usepackage[T1]{fontenc}\n\n" latex_code += "\\usepackage{booktabs}\n" latex_code += "\\usepackage{pst-all}\n" latex_code += "\\usepackage{multido}\n" latex_code += "\\setlength{\\parindent}{0pt}\n" latex_code += "\\begin{document}\n" # Kopf latex_code += "\\title{\\textbf{" latex_code += _sonderzeichen_behandlung(project_title) latex_code += "} \\\\ \n \\normalsize (Report beginnt: " latex_code += report_begin.get_nice_string() latex_code += " Report ende: " + report_ende.get_nice_string() latex_code += " ) }\n" latex_code += "\\author{" einrichtungsadresse = db_querys.get_headproject_addess(eltern_objekt) latex_code += _sonderzeichen_behandlung(einrichtungsadresse) latex_code += "}\n" latex_code += "\\maketitle\n" latex_code += "\\tableofcontents\n" latex_code += "\\newpage\n" # Haubtteil # stammdaten if mit_stammdaten_von != "": latex_code += "\\section{Stammdaten}\n" latex_code += "\\begin{longtable}{p{8cm} }\n" tab_list = db_querys.get_reiter_from_stammdaten(eltern_objekt, mit_stammdaten_von) for tab in tab_list: reiter = _sonderzeichen_behandlung(tab) data = db_querys.get_daten_from_stammdaten(eltern_objekt, mit_stammdaten_von, tab) blatt = _sonderzeichen_behandlung(data) latex_code += "\\toprule \n" latex_code += "\\specialrule{1pt}{1pt}{1pt} \n" latex_code += "\\textbf{ " latex_code += reiter + " }" latex_code += "\\\\ \\midrule \n" latex_code += blatt + " \\\\ \n " print"#################### reiter/blatt: ",reiter,"/",blatt latex_code += "\\end{longtable} \n" print"erstelle Haubtprojekt " if rekursiv == 1: latex_code += "\n \\part{Haubtprojekt: " + project_title + "} \n" latex_code += _projekt_report( eltern_objekt, \ project_title, \ rekursiv, \ mit_stammdaten_von, \ epoch_begin, \ epoch_end, \ ausgabeformat) # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ # Wieso zur Höle ist "latex_code" an dieser stell kein UNICODE?! _______________________________________________ Python-de maillist - Python-de@python.net http://python.net/mailman/listinfo/python-de