From 1deb422a065a30c0868203e7c9d158f9ab81acb3 Mon Sep 17 00:00:00 2001 From: Not Zed Date: Mon, 5 May 2003 01:03:56 +0000 Subject: [#41849] 2003-05-02 Not Zed [#41849] * e-summary-rdf.c (tree_walk): check the in-memory charset, not the transport charset when creating output. svn path=/trunk/; revision=21101 --- my-evolution/e-summary-rdf.c | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) (limited to 'my-evolution/e-summary-rdf.c') diff --git a/my-evolution/e-summary-rdf.c b/my-evolution/e-summary-rdf.c index 70ce86687d..a0a7adf58d 100644 --- a/my-evolution/e-summary-rdf.c +++ b/my-evolution/e-summary-rdf.c @@ -180,6 +180,7 @@ tree_walk (xmlNodePtr root, int i; char *t, *u; char *tmp; + char *charset; if (r->summary->preferences == NULL) { limit = 10; @@ -187,6 +188,15 @@ tree_walk (xmlNodePtr root, limit = r->summary->preferences->limit; } + /* check in-memory encoding first, fallback to transport encoding, which may or may not be correct */ + if (r->cache->charset == XML_CHAR_ENCODING_UTF8 + || r->cache->charset == XML_CHAR_ENCODING_ASCII) { + charset = NULL; + } else { + /* bad/missing encoding, fallback to latin1 (locale?) */ + charset = r->cache->encoding ? r->cache->encoding : "iso-8859-1"; + } + /* FIXME: Need arrows */ if (r->shown == FALSE) { char *p; @@ -252,8 +262,8 @@ tree_walk (xmlNodePtr root, if (*u != '\0') g_string_sprintfa (html, "", u); - if (r->cache->encoding) { - char *tmp = e_utf8_from_charset_string (r->cache->encoding, t); + if (charset) { + char *tmp = e_utf8_from_charset_string (charset, t); g_string_append (html, tmp); g_free (tmp); } else { @@ -278,9 +288,9 @@ tree_walk (xmlNodePtr root, tmp = g_strdup_printf ("
  • \n", layer_find_url(item[i]->children, "link", "")); g_string_append (html, tmp); g_free (tmp); - - if (r->cache->encoding) { - char *tmp = e_utf8_from_charset_string (r->cache->encoding, p); + + if (charset) { + char *tmp = e_utf8_from_charset_string (charset, p); g_string_append (html, tmp); g_free (tmp); } else { -- cgit v1.2.3