diff options
author | Philippe Crama <pcfeb0009@gmx.com> | 2011-02-08 00:24:37 +0100 |
---|---|---|
committer | Miklos Vajna <vmiklos@frugalware.org> | 2011-02-08 00:24:37 +0100 |
commit | 3423be07392acb960fed3e014141ce5df177c06f (patch) | |
tree | c3c92a9e4af39211f5fa7db08b1c4dcdcd73c699 | |
parent | c899eb01dbe590be257a619a3da577a78c08a8a2 (diff) |
Always use UTF-8 encoding when dealing with BitlBee
BitlBee internally always uses UTF-8 (see initialization of
irc->iconv and irc->oconv in set_eval_charset in irc.c of
BitlBee's source and their usage in eg irc_vawrite in the
same file; confirmed on #bitlbee), so it makes no sense to
either get an encoding from the current locale or to make it
a runtime setting.
-rw-r--r-- | skype/skyped.py | 27 |
1 files changed, 16 insertions, 11 deletions
diff --git a/skype/skyped.py b/skype/skyped.py index 2730966f..733080f1 100644 --- a/skype/skyped.py +++ b/skype/skyped.py @@ -236,12 +236,15 @@ class SkypeApi: else: msg_text = [msg_text] for i in msg_text: - # use utf-8 here to solve the following problem: - # people use env vars like LC_ALL=en_US (latin1) then - # they complain about why can't they receive latin2 - # messages.. so here it is: always use utf-8 then - # everybody will be happy - e = i.encode('UTF-8') + try: + # Internally, BitlBee always uses UTF-8 and encodes/decodes as + # necessary to communicate with the IRC client; thus send the + # UTF-8 it expects + e = i.encode('UTF-8') + except: + # Should never happen, but it's better to send difficult to + # read data than crash because some message couldn't be encoded + e = i.encode('ascii', 'backslashreplace') if options.conn: dprint('<< ' + e) try: @@ -259,12 +262,14 @@ class SkypeApi: options.last_bitlbee_pong = time.time() return try: - encoding = locale.getdefaultlocale()[1] - if not encoding: - raise ValueError - e = msg_text.decode(encoding) - except ValueError: + # Internally, BitlBee always uses UTF-8 and encodes/decodes as + # necessary to communicate with the IRC client; thus decode the + # UTF-8 it sent us e = msg_text.decode('UTF-8') + except: + # Should never happen, but it's better to send difficult to read + # data to Skype than to crash + e = msg_text.decode('ascii', 'backslashreplace') dprint('>> ' + e) try: c = self.skype.Command(e, Block=True) |