Hi. This is work around. 1) HTTP server and meta have charset. One example is http://www.so-net.ne.jp/news/cgi-bin/article.cgi?gid=mai&aid=20090119-570-OYT1T00946 diff -r a0230b2a4a32 src/cache.c --- a/src/cache.c Fri Jan 16 14:45:17 2009 -0300 +++ b/src/cache.c Wed Jan 21 20:21:49 2009 +0900 @@ -628,6 +628,7 @@ { char *header = entry->Header->str; char *Length, *Type, *location_str, *encoding; + char *charset; #ifndef DISABLE_COOKIES Dlist *Cookies; #endif @@ -753,6 +754,13 @@ entry->TypeHdr = Type; _MSG("TypeHdr {%s} {%s}\n", Type, URL_STR(entry->Url)); _MSG("TypeMeta {%s}\n", entry->TypeMeta); + a_Misc_parse_content_type(Type, NULL, NULL, &charset); + if (charset) { + entry->CharsetDecoder = a_Decode_charset_init(charset); + if (entry->CharsetDecoder) + entry->UTF8Data = dStr_new(""); + dFree(charset); + } } } 2) Only meta has charset. One example is http://www.picfun.com/app00.html diff -r a0230b2a4a32 src/html.cc --- a/src/html.cc Fri Jan 16 14:45:17 2009 -0300 +++ b/src/html.cc Wed Jan 21 20:22:00 2009 +0900 @@ -2789,6 +2789,7 @@ * this code in another bw might have already changed it for us. */ if (a_Misc_content_type_cmp(html->content_type, new_content)) { + html->stop_parser = true; html->repush_after_head = true; } } Regards, furaisanjin