I believe I have found a permanent solution for the problem of vanishing rich_editing flags for some/most of us with a couple of very minor changes to two of the WP core programs (admin-functions.php and user-edit.php).
Many of us have been plagued for some time with the vanishing rich_editing flag. User's contacting me said they were seeing a bunch of strange characters when they would try to post. Checking I would invariably see that their rich_editing had been changed to false. After resetting it to true, I would get another call with the same problem. I reached my frustration level early and decided to do a little snooping.
I discovered that anytime an administrator attempts to change a users profile, any setting, on the Change User screen, the user's rich editing flag turns false. Making a change to your own profile this problem does not occur.
Since I'm pretty much of a newbie with PHP, I don't know exactly why it happens but I think it has something to do with the users rich edit flag not being captured along with the rest of his data prior to re-updating his wp-usermeta records (change #1 below).
These minor changes not only clear up the vanishing rich-edit for me, but also give the administrator the option now to turn rich_editing on or off for users from the edit-users screen (change #2 below) instead of having to access the SQL data bases for this.
Since so many have had this problem, and if this fix solves the problem for enough people, it just might be important enough for the WP moderaters to take note and review it's feasibility and workability for inclusion in a future upgrade as each time you upgrade to a newer version you would need to propagate these patches to the new version each time.
I sure hope this helps someone. It does work for me. If it is helpful, I would appreciate a reply here.
------------------------------------------------------
Change #1: Modify the admin/admin-functions.php/get_user_to_edit function:
after line #428:
$user->jabber = attribute_escape($user->jabber);
Add a new line:
$user->rich_editing = attribute_escape($user->rich_editing);
Change #2: Modify admin/user-edit.php.
Insert between:
<fieldset> (around line 86)
and
<legend><?php _e('Name'); ?></legend> (around line 92)
The Following:
<?php if ( rich_edit_exists() ) : // don't bother showing the option if the editor has been removed ?>
<p><label for="rich_editing"><input name="rich_editing" type="checkbox" id="rich_editing" value="true" <?php checked('true', "$profileuser->rich_editing"); ?> />
<?php _e('Use the visual editor when writing') ?></label><p>
<?php endif; ?>
-----------------------------------------
Disclaimer: Line #'s mentioned here are valid for v.2.1.2 but may be different for other versions of WP.
If you do cut/paste of these instructions, I'm not sure if they will copy correctly. You need to check.