I am using a plugin the updates the option table using update_option command.
When I update content with hebrew characters it turns into gibrish.
My database does support hebrew (or any other utf8 chars).
Is there any workaround?
Chances is are that the content-type/charset header is not being sent, and that you end up reading the utf8 chars as if they were latin-1.
Also, note that serialize()/unserialize() are not multibyte character-safe. For a subset of characters, the string’s length as returned by serialize() will occasionally differ from the expected length as it would be returned by mb_strlen(). This leads to all sorts of hard to debug unserialize problems which, since around WP 2.8, WP tries to discard in order to avoid crashing sites.
As far as I know WordPress is perfectly UTF8-aware.
This test code (hope I got string right, copied from Wikipedia) works fine for me:
$hebrew = 'עִבְרִית'; update_option('hebrew',$hebrew); var_dump(get_option('hebrew'));
Your issue is likely caused by some other processing done on string by plugin.
Convert your file encoding into UTF-8 without BOM.