diff --git a/Hastodon.cabal b/Hastodon.cabal
--- a/Hastodon.cabal
+++ b/Hastodon.cabal
@@ -1,5 +1,5 @@
 Name: Hastodon
-Version: 0.1.0
+Version: 0.2.0
 Synopsis: mastodon client module for Haskell
 Category: Web
 Description: mastodon client module for Haskell
diff --git a/Web/Hastodon.hs b/Web/Hastodon.hs
--- a/Web/Hastodon.hs
+++ b/Web/Hastodon.hs
@@ -64,11 +64,18 @@
 import qualified Data.ByteString.Char8 as Char8
 import qualified Data.ByteString.Lazy.Char8 as LChar8
 import qualified Data.Text as T
+import qualified Data.Text.Encoding as T
 import Data.String.Utils
 import Network.HTTP.Simple
 import Network.HTTP.Types.Header
 
 --
+-- Utility
+--
+utf8ToChar8 :: String -> Char8.ByteString
+utf8ToChar8 = T.encodeUtf8 . T.pack
+
+--
 -- Mastodon API endpoints
 --
 pAccountById       = "/api/v1/accounts/:id"
@@ -360,10 +367,10 @@
 getOAuthToken :: String -> String -> String -> String -> String -> IO (Either JSONException OAuthResponse)
 getOAuthToken clientId clientSecret username password host = do
   initReq <- parseRequest $ "https://" ++ host ++ "/oauth/token"
-  let reqBody = [(Char8.pack "client_id", Char8.pack clientId),
-                 (Char8.pack "client_secret", Char8.pack clientSecret),
-                 (Char8.pack "username", Char8.pack username),
-                 (Char8.pack "password", Char8.pack password),
+  let reqBody = [(Char8.pack "client_id", utf8ToChar8 clientId),
+                 (Char8.pack "client_secret", utf8ToChar8 clientSecret),
+                 (Char8.pack "username", utf8ToChar8 username),
+                 (Char8.pack "password", utf8ToChar8 password),
                  (Char8.pack "grant_type", Char8.pack "password"),
                  (Char8.pack "scope", Char8.pack "read write follow")]
   let req = setRequestBodyURLEncoded reqBody $ initReq
@@ -372,7 +379,7 @@
 
 mkHastodonHeader :: String -> Request -> Request
 mkHastodonHeader token =
-  addRequestHeader hAuthorization $ Char8.pack $ "Bearer " ++ token
+  addRequestHeader hAuthorization $ utf8ToChar8 $ "Bearer " ++ token
 
 mkHastodonRequest :: String -> HastodonClient -> IO Request
 mkHastodonRequest path client = do
@@ -479,7 +486,7 @@
 
 postApps :: String -> String -> IO (Either JSONException OAuthClient)
 postApps host clientName = do
-  let reqBody = [(Char8.pack "client_name", Char8.pack clientName),
+  let reqBody = [(Char8.pack "client_name", utf8ToChar8 clientName),
                  (Char8.pack "redirect_uris", Char8.pack "urn:ietf:wg:oauth:2.0:oob"),
                  (Char8.pack "scopes", Char8.pack "read write follow")]
   initReq <- parseRequest $ "https://" ++ host ++ pApps
@@ -568,7 +575,7 @@
 
 postStatus :: HastodonClient -> String ->  IO (Either JSONException Status)
 postStatus client status = do
-  res <- postAndGetHastodonResponseJSON pStatuses [(Char8.pack "status", Char8.pack status)] client
+  res <- postAndGetHastodonResponseJSON pStatuses [(Char8.pack "status", utf8ToChar8 status)] client
   return (getResponseBody res :: Either JSONException Status)
 
 postReblog :: HastodonClient -> Int ->  IO (Either JSONException Status)
