fix: allow empty channel names
fix: force utf-8 encoding for messages