Closed Bug 220846 Opened 21 years ago Closed 21 years ago

Change of Window Configuration affect on Character Coding

Categories

(Thunderbird :: Mail Window Front End, defect)

x86
Windows XP
defect
Not set
minor

Tracking

(Not tracked)

RESOLVED FIXED
Thunderbird0.4

People

(Reporter: gorky, Assigned: mscott)

References

Details

Attachments

(1 file)

User-Agent:       Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.5) Gecko/20030925 Firebird/0.7
Build Identifier: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.5) Gecko/20030924 Thunderbird/0.3

After change of window configuration letters with diacritical marks in messages
are displaing with errors (it displays "ż","ę", "ś", "ź", "ć" etc.). This
happends only when you change window configuration while one of the messsages is
in preview pane. If you change window configuration when you're on start page
everything is OK. When you restart Thunderbird things go back to normal (letters
are displaing correctly). 

I'll show you how to reproduce it in polish language letters example

Reproducible: Always

Steps to Reproduce:
1. Set Central European (ISO-8859-2) Character Coding in Drafts Folder
properties, and check "apply to all messages in the folder" 
2. Write new message using Polish language letters(ą,ć,ę,ł,ń,�,ś,ż,ź), set
Central European (ISO-8859-2) Character Coding and save it
3. Go to drafts folder and view the message
4. Go to General in Options and change window configuration, click OK



I saw this first in 2003-08-29 build, and it appears in every build from then. I
don't know if this is in earlier builds (I just don't check it). I'm using
Thunderbird on default theme, without any extensions.
triaging.
Status: NEW → ASSIGNED
Target Milestone: --- → Thunderbird0.4
*** Bug 226717 has been marked as a duplicate of this bug. ***
the act of changing the layout, causes us to get a new docshell for the message
pane which we then re-root back into our document. For some reason, the new
docshell no longer handles charsets correctly.
I have not figured out why the docshell loses charset information after
switching panes yet. This will make a good release note item for 0.4
Here's something weird:

After changing the layout, I notice the problem that we don't show non ascii
characters correctly anymore in the message body docshell.

If I manually change the character encoding from whatever it really is over to
"UTF-8" via the View / Character Encoding menu, then the message is restored to
its previous state.
#5
Well, i've checked it on message with ISO 8859-2 character coding, and this
override don't work for me.

(checked on WinXP, Tb 0.4RC1 Repin 1 and Respin 2)
Attached patch the fixSplinter Review
This fixes the problem. By clearing mCurrentDisplayCharset when we reset the
docshell on the message pane, we then allow nsMessenger::SetDisplayCharset to
later reset the character set on the docshell.

There is one catch to this patch. The message you are currently viewing still
shows up wrong in the message pane. But any other message loaded or reloaded in
that window renders correctly. This is because when we reset the charset on
this new docshell, we don't have a content viewer to also set the charset on
until after we've loaded at least one message in it.
Attachment #136755 - Flags: superreview?(bienvenu)
The patch makes more sense if you see the definition of SetDisplayCharset.

NS_IMETHODIMP nsMessenger::SetDisplayCharset(const char * aCharset)
{
  if (mCurrentDisplayCharset.Equals(aCharset))
    return NS_OK;

  // libmime always converts to UTF-8 (both HTML and XML)
  if (mDocShell) 
  {
    nsCOMPtr<nsIContentViewer> cv;
    mDocShell->GetContentViewer(getter_AddRefs(cv));
    if (cv) 
    {
      nsCOMPtr<nsIMarkupDocumentViewer> muDV = do_QueryInterface(cv);
      if (muDV) 
        muDV->SetForceCharacterSet(nsDependentCString(aCharset));

      mCurrentDisplayCharset = aCharset;
    }
  }

  return NS_OK;
}
Attachment #136755 - Flags: superreview?(bienvenu) → superreview+
Umm. Let me correct my self. After change to UTF-8 message is still displaying
with errors, but this is different type of errors.

See this:
http://www.volvox.neostrada.pl/inne/tb-bug.gif

When i load other message with ISO 8859-2 character coding, it's displaying with
"old" errors (middle area in the picture).
fix checked in
Status: ASSIGNED → RESOLVED
Closed: 21 years ago
Resolution: --- → FIXED
The bug is here in Mozilla Thunderbird 0.5 (20040207). Should it be reopened?

Changing the layout (view->layout) displays gibberish intead of
a message with intl. chars until the message is reloaded.

Reproducible: yup.
Steps to reproduce:
0. (make sure View->Layout->Classic View checked)
1. Get a message with intl. (cyrillic) chars.
2. Click View->Layout->Wide View

Actual results: you see gibberish, not the message
Expected results: you see the message, not gibberish.

Additional notes:
1. buggy when switching: classic<->wide; wide<->vertical. [1]
ok for: classic<->vertical. [2]
2. Buggy for both HTML & plain text.
3. Just noticed: the mail start page goes away when switching layouts.
(same, it goes away when switching [1], not [2])
4. example:
Äîðîãèå äðóçüÿ!
becomes
à?àÎá?àÎàÃàÈàÅ àÄá?á?àÇá?á?!
Bug still exists in 20040226 (win32) build. This should be reopened.
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: