diff --git a/Graphics/HsExif.hs b/Graphics/HsExif.hs
--- a/Graphics/HsExif.hs
+++ b/Graphics/HsExif.hs
@@ -530,3 +530,7 @@
 --
 -- There are also a couple of higher-level helpers like 'getOrientation',
 -- 'getDateTimeOriginal', 'wasFlashFired' and 'getGpsLatitudeLongitude'.
+--
+-- When building on Windows if you have trouble with the @iconv@ library,
+-- you may build without that dependency: @cabal install -f-iconv@.
+-- That way you loose nice decoding of the EXIF User Comment though.
diff --git a/Graphics/PrettyPrinters.hs b/Graphics/PrettyPrinters.hs
--- a/Graphics/PrettyPrinters.hs
+++ b/Graphics/PrettyPrinters.hs
@@ -1,4 +1,4 @@
-{-# LANGUAGE ScopedTypeVariables, OverloadedStrings #-}
+{-# LANGUAGE ScopedTypeVariables, OverloadedStrings, CPP #-}
 module Graphics.PrettyPrinters where
 
 import Text.Printf (printf)
@@ -6,13 +6,15 @@
 import Data.Maybe
 import qualified Data.Map as Map
 import qualified Data.ByteString as BS
-import qualified Data.ByteString.Lazy as BL
 import Control.Arrow (first)
 import Control.Applicative
-import Data.Text.Encoding (decodeUtf8)
+import Data.Text.Encoding
 import qualified Data.Text as T
 import Data.Text (Text)
+#if ICONV
+import qualified Data.ByteString.Lazy as BL
 import Codec.Text.IConv (convertFuzzy, EncodingName, Fuzzy(Transliterate))
+#endif
 
 import Graphics.Types (ExifValue(..), formatAsFloatingPoint)
 
@@ -196,6 +198,12 @@
         asStr = T.unpack $ decodeUtf8 s
 formatVersion _ v@_ = unknown v
 
+#if ICONV
+
+getIconvEncodingName :: Text -> EncodingName
+getIconvEncodingName "JIS" = "SJIS"
+getIconvEncodingName x@_ = T.unpack x -- ASCII and UNICODE work out of the box.
+
 ppUserComment :: ExifValue -> Text
 ppUserComment (ExifUndefined v) = decodeUtf8 $ BL.toStrict $ convertFuzzy Transliterate encoding "UTF8" rawText
     where
@@ -203,16 +211,20 @@
         rawText = BL.fromStrict $ BS.drop 8 v
 ppUserComment v@_ = unknown v
 
+#else
+
+ppUserComment :: ExifValue -> Text
+ppUserComment (ExifUndefined v) = decodeUtf8 $ BS.drop 8 v
+ppUserComment v@_ = unknown v
+
+#endif
+
 -- | Pretty printer for the FileSource tag
 ppFileSource :: ExifValue -> Text
 ppFileSource (ExifUndefined v)
     | BS.head v == 3 = "DSC"
     | otherwise      = "(unknown)"
 ppFileSource v = unknown v
-
-getIconvEncodingName :: Text -> EncodingName
-getIconvEncodingName "JIS" = "SJIS"
-getIconvEncodingName x@_ = T.unpack x -- ASCII and UNICODE work out of the box.
 
 fromNumberMap :: [(Int, Text)] -> ExifValue -> Text
 fromNumberMap m = fromMap convertedMap
diff --git a/hsexif.cabal b/hsexif.cabal
--- a/hsexif.cabal
+++ b/hsexif.cabal
@@ -1,8 +1,5 @@
--- Initial hsexif.cabal generated by cabal init.  For further
--- documentation, see http://haskell.org/cabal/users-guide/
-
 name:                hsexif
-version:             0.6.0.3
+version:             0.6.0.4
 synopsis:            EXIF handling library in pure Haskell
 description:         The hsexif library provides functions for working with EXIF data
                      contained in JPEG files. Currently it only supports reading the data.
@@ -17,6 +14,11 @@
 extra-source-files:  tests/*.jpg tests/*.png
 cabal-version:       >=1.10
 
+Flag iconv
+  Description: Enable encoding conversion of the User Comment tag with iconv.
+               It's a nice thing to have but iconv is difficult to install on windows.
+  Default:     True
+
 library
   exposed-modules:     Graphics.HsExif
   other-modules:       Graphics.Types, Graphics.PrettyPrinters, Graphics.ExifTags, Graphics.Helpers
@@ -26,8 +28,11 @@
                        bytestring >=0.10 && <0.11,
                        containers >= 0.5 && <0.6,
                        time >= 1.4 && <1.6,
-                       iconv >= 0.4 && <0.5,
                        text >= 0.9
+  if flag(iconv)
+    build-depends:     iconv >= 0.4 && <0.5
+    cpp-Options:       -DICONV
+
   -- hs-source-dirs:
   default-language:    Haskell2010
   Ghc-Options:         -Wall
@@ -44,6 +49,9 @@
                        bytestring >=0.10 && <0.11,
                        containers >= 0.5 && <0.6,
                        time >= 1.4 && <1.6,
-                       iconv >= 0.4 && <0.5,
                        text >= 0.9
+  if flag(iconv)
+    build-depends:     iconv >= 0.4 && <0.5
+    cpp-Options:       -DICONV
+
   Ghc-Options:         -Wall
diff --git a/tests/Tests.hs b/tests/Tests.hs
--- a/tests/Tests.hs
+++ b/tests/Tests.hs
@@ -1,4 +1,4 @@
-{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE OverloadedStrings, CPP #-}
 import Test.Hspec
 import Test.HUnit
 
@@ -175,7 +175,9 @@
     checkPrettyPrinter gpsAltitude "2681.1111" gps2ExifData
     checkPrettyPrinter gpsTimeStamp "09:12:32.21" gps2ExifData
     checkPrettyPrinter userComment "Test Exif comment" exifData
+#if ICONV
     checkPrettyPrinter userComment "Test Exif commentčšž" stdExifData
+#endif
 
 checkPrettyPrinter :: ExifTag -> Text -> Maybe (Map ExifTag ExifValue) -> Assertion
 checkPrettyPrinter tag str exifData = assertEqual' (Just str) $ prettyPrinter tag <$> (exifData >>= Map.lookup tag)
