diff --git a/Data/String/Conv.hs b/Data/String/Conv.hs
--- a/Data/String/Conv.hs
+++ b/Data/String/Conv.hs
@@ -61,18 +61,18 @@
 
 
 instance StringConv String String where strConv _ = id
-instance StringConv String B.ByteString where strConv _ = B.pack
-instance StringConv String LB.ByteString where strConv _ = LB.pack
+instance StringConv String B.ByteString where strConv l = T.encodeUtf8 . strConv l
+instance StringConv String LB.ByteString where strConv l = LT.encodeUtf8 . strConv l
 instance StringConv String T.Text where strConv _ = T.pack
 instance StringConv String LT.Text where strConv _ = LT.pack
 
-instance StringConv B.ByteString String where strConv _ = B.unpack
+instance StringConv B.ByteString String where strConv l = T.unpack . strConv l
 instance StringConv B.ByteString B.ByteString where strConv _ = id
 instance StringConv B.ByteString LB.ByteString where strConv _ = LB.fromChunks . return
 instance StringConv B.ByteString T.Text where strConv = decodeUtf8T
 instance StringConv B.ByteString LT.Text where strConv l = strConv l . LB.fromChunks . return
 
-instance StringConv LB.ByteString String where strConv _ = LB.unpack
+instance StringConv LB.ByteString String where strConv l = LT.unpack . strConv l
 instance StringConv LB.ByteString B.ByteString where strConv _ = B.concat . LB.toChunks
 instance StringConv LB.ByteString LB.ByteString where strConv _ = id
 instance StringConv LB.ByteString T.Text where strConv l = decodeUtf8T l . strConv l
diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -1,3 +1,7 @@
+0.1.2
+=====
+* Fixed bug where String <-> ByteString conversion would trim characters to 8 bits. Now it goes through conversion to Text first.
+
 0.1.1
 =====
 * Fixed bug where decoding text from bytestrings would always decode
diff --git a/string-conv.cabal b/string-conv.cabal
--- a/string-conv.cabal
+++ b/string-conv.cabal
@@ -1,5 +1,5 @@
 name:                string-conv
-version:             0.1.1
+version:             0.1.2
 synopsis:            Standardized conversion between string types
 description:         Avoids the need to remember many different functions
                      for converting string types.  Just use one universal
@@ -18,6 +18,10 @@
   README.md
   changelog.md
 
+flag lib-Werror
+  default: False
+  manual: True
+
 source-repository head
   type:     git
   location: https://github.com/Soostone/string-conv.git
@@ -25,4 +29,7 @@
 library
   exposed-modules:     Data.String.Conv
   build-depends:       base >= 4.4 && < 5, bytestring, text
+  if flag(lib-Werror)
+    ghc-options: -Werror
+
   ghc-options: -Wall
