diff --git a/Text/Shakespeare.hs b/Text/Shakespeare.hs
--- a/Text/Shakespeare.hs
+++ b/Text/Shakespeare.hs
@@ -381,7 +381,11 @@
 
 shakespeareFromString :: ShakespeareSettings -> String -> Q Exp
 shakespeareFromString r str = do
-    s <- qRunIO $ preFilter Nothing r str
+    s <- qRunIO $ preFilter Nothing r $
+#ifdef WINDOWS
+          filter (/='\r')
+#endif
+          str
     contentsToShakespeare r $ contentFromString r s
 
 shakespeareFile :: ShakespeareSettings -> FilePath -> Q Exp
diff --git a/Text/Shakespeare/Base.hs b/Text/Shakespeare/Base.hs
--- a/Text/Shakespeare/Base.hs
+++ b/Text/Shakespeare/Base.hs
@@ -25,7 +25,7 @@
 
 import Language.Haskell.TH.Syntax
 import Language.Haskell.TH (appE)
-import Data.Char (isUpper, isSymbol)
+import Data.Char (isUpper, isSymbol, isPunctuation, isAscii)
 import Text.ParserCombinators.Parsec
 import Text.Parsec.Prim (Parsec)
 import Data.List (intercalate)
@@ -109,10 +109,16 @@
             x <- many1 $ noneOf " \t\n\r()"
             _ <- char ')'
             return $ DerefIdent $ Ident x
+
+    -- See: http://www.haskell.org/onlinereport/haskell2010/haskellch2.html#x7-160002.2
+    isOperatorChar c
+        | isAscii c = c `elem` "!#$%&*+./<=>?@\\^|-~:"
+        | otherwise = isSymbol c || isPunctuation c
+
     derefInfix x = try $ do
         _ <- delim
         xs <- many $ try $ derefSingle >>= \x' -> delim >> return x'
-        op <- many1 (satisfy $ \c -> isSymbol c || c `elem` "-") <?> "operator"
+        op <- many1 (satisfy isOperatorChar) <?> "operator"
         -- special handling for $, which we don't deal with
         when (op == "$") $ fail "don't handle $"
         let op' = DerefIdent $ Ident op
@@ -275,4 +281,10 @@
 readUtf8File fp = do
     h <- SIO.openFile fp SIO.ReadMode
     SIO.hSetEncoding h SIO.utf8_bom
-    TIO.hGetContents h
+    ret <- TIO.hGetContents h 
+    return $
+#ifdef WINDOWS
+      TL.filter ('\r'/=) ret
+#else
+      ret
+#endif
diff --git a/shakespeare.cabal b/shakespeare.cabal
--- a/shakespeare.cabal
+++ b/shakespeare.cabal
@@ -1,5 +1,5 @@
 name:            shakespeare
-version:         1.2.0.1
+version:         1.2.0.2
 license:         MIT
 license-file:    LICENSE
 author:          Michael Snoyman <michael@snoyman.com>
