Here's what happen when you construct this string:
'{ts}: free form request {free_form_request} requested from {nick}'.format(ts=ts,free_form_request=free_form_request.encode('utf-8'),nick=nick)
- free_form_requestis- encode-d into a byte string using- utf-8as the encoding. This works because- utf-8can represent- [EXID(이엑스아이디)] 위아래 (UP&DOWN) MV.
- However, the format string ('{ts}: free form request {free_form_request} requested from {nick}') is a unicode string (because of  importedfrom __future__ import unicode_literals).
- You can't use byte strings as format arguments for a unicode string, so Python attempts to decodethe byte string created in 1. to create a unicode string (which would be valid as an format argument).
- Python attempts the decode-ing using the default encoding, which isascii, and fails, because the byte string is autf-8byte string that includes byte values that don't make sense inascii.
- Python throws a UnicodeDecodeError.
Note that while the code is obviously doing something here, this would actually not throw an exception on Python 3, which would instead substitute the repr of the byte string (the repr being a unicode string).
To fix your issue, just pass unicode strings to format. 
That is, don't do step 1. where you encoded free_form_request as a byte string: keep it as a unicode string by removing .encode(...):
'{ts}: free form request {free_form_request} requested from {nick}'.format(
    ts=ts, 
    free_form_request=free_form_request, 
    nick=nick)
Note Padraic Cunningham's answer in the comments as well.