@@ -654,7 +654,20 @@ uri = try $ do
654654 let uri' = scheme <> ":" <> fromEntities str'
655655 return (uri', escapeURI uri')
656656 where
657− wordChar = alphaNum <|> oneOf "#$%+/@\\_-&="
657+ isWordChar '#' = True
658+ isWordChar '$' = True
659+ isWordChar '%' = True
660+ isWordChar '+' = True
661+ isWordChar '/' = True
662+ isWordChar '@' = True
663+ isWordChar '\\' = True
664+ isWordChar '_' = True
665+ isWordChar '-' = True
666+ isWordChar '&' = True
667+ isWordChar '=' = True
668+ isWordChar c = isAlphaNum c
669+
670+ wordChar = satisfy isWordChar
658671 percentEscaped = try $ (:) <$> char '%' <*> many1 hexDigit
659672 entity = try $ pure <$> characterReference
660673 punct = try $ many1 (char ',') <|> fmap pure (satisfy (\c -> not (isSpace c) && c /= '<' && c /= '>'))