diff --git a/Data/CharSet/Posix/Ascii.hs b/Data/CharSet/Posix/Ascii.hs
--- a/Data/CharSet/Posix/Ascii.hs
+++ b/Data/CharSet/Posix/Ascii.hs
@@ -11,18 +11,21 @@
 
 module Data.CharSet.Posix.Ascii
     ( posixAscii
-    -- * POSIX ASCII \"classes\"
-    , alnum, alpha, blank, cntrl, digit, graph, print, word, punct, space, upper, lower, xdigit
+    , lookupPosixAsciiCharSet
+    -- * Traditional POSIX ASCII \"classes\"
+    , alnum, alpha, ascii, blank, cntrl, digit, graph, print, word, punct, space, upper, lower, xdigit
     ) where
 
 import Prelude hiding (print)
+import Data.Char
 import Data.CharSet
 import Data.Map (Map)
 import qualified Data.Map as Map
 
-alnum, alpha, blank, cntrl, digit, graph, print, word, punct, space, upper, lower, xdigit :: CharSet
+alnum, alpha, ascii, blank, cntrl, digit, graph, print, word, punct, space, upper, lower, xdigit :: CharSet
 alnum = alpha `union` digit
 alpha = lower `union` upper
+ascii = range '\x00' '\x7f'
 blank = fromList " \t"
 cntrl = insert '\x7f' $ range '\x00' '\x1f'
 digit = range '0' '9'
@@ -40,6 +43,7 @@
 posixAscii = Map.fromList
     [ ("alnum", alnum)
     , ("alpha", alpha)
+    , ("ascii", ascii)
     , ("blank", blank)
     , ("cntrl", cntrl)
     , ("digit", digit)
@@ -52,3 +56,6 @@
     , ("lower", lower)
     , ("xdigit", xdigit)
     ]
+
+lookupPosixAsciiCharSet :: String -> Maybe CharSet
+lookupPosixAsciiCharSet s = Map.lookup (Prelude.map toLower s) posixAscii
diff --git a/Data/CharSet/Posix/Unicode.hs b/Data/CharSet/Posix/Unicode.hs
new file mode 100644
--- /dev/null
+++ b/Data/CharSet/Posix/Unicode.hs
@@ -0,0 +1,64 @@
+-----------------------------------------------------------------------------
+-- |
+-- Module      :  Data.CharSet.Posix.Unicode
+-- Copyright   :  (c) Edward Kmett 2010
+-- License     :  BSD3
+-- Maintainer  :  ekmett@gmail.com
+-- Stability   :  experimental
+-- Portability :  portable
+--
+-------------------------------------------------------------------------------
+
+module Data.CharSet.Posix.Unicode
+    ( posixUnicode
+    , lookupPosixUnicodeCharSet
+    -- * POSIX ASCII \"classes\"
+    , alnum, alpha, ascii, blank, cntrl, digit, graph, print, word, punct, space, upper, lower, xdigit
+    ) where
+
+import Prelude hiding (print)
+import Data.Char
+import Data.CharSet
+import qualified Data.CharSet.Unicode.Category as Category
+import qualified Data.CharSet.Unicode.Block as Block
+import Data.Map (Map)
+import qualified Data.Map as Map
+
+alnum, alpha, ascii, blank, cntrl, digit, graph, print, word, punct, space, upper, lower, xdigit :: CharSet
+alnum = alpha `union` digit
+ascii = Block.basicLatin
+alpha = Category.letterAnd
+blank = insert '\t' Category.space 
+cntrl = Category.control
+digit = Category.decimalNumber
+lower = Category.lowercaseLetter
+upper = Category.uppercaseLetter
+graph = complement (Category.separator `union` Category.other)
+print = complement (Category.other)
+word  = Category.letter `union` Category.number `union` Category.connectorPunctuation
+punct = Category.punctuation `union` Category.symbol
+space = fromList " \t\r\n\v\f" `union` Category.separator
+xdigit = digit `union` range 'a' 'f' `union` range 'A' 'F'
+
+-- :digit:, etc.
+posixUnicode :: Map String CharSet
+posixUnicode = Map.fromList
+    [ ("alnum", alnum)
+    , ("alpha", alpha)
+    , ("ascii", ascii)
+    , ("blank", blank)
+    , ("cntrl", cntrl)
+    , ("digit", digit)
+    , ("graph", graph) 
+    , ("print", print)
+    , ("word",  word)
+    , ("punct", punct)
+    , ("space", space)
+    , ("upper", upper)
+    , ("lower", lower)
+    , ("xdigit", xdigit)
+    ]
+
+lookupPosixUnicodeCharSet :: String -> Maybe CharSet
+lookupPosixUnicodeCharSet s = Map.lookup (Prelude.map toLower s) posixUnicode
+
diff --git a/charset.cabal b/charset.cabal
--- a/charset.cabal
+++ b/charset.cabal
@@ -1,5 +1,5 @@
 name:         charset
-version:      0.2.1
+version:      0.2.2
 license:      BSD3
 license-File: LICENSE
 copyright:    (c) Edward Kmett 2010
@@ -21,6 +21,7 @@
     Data.CharSet
     Data.CharSet.Common
     Data.CharSet.Posix.Ascii
+    Data.CharSet.Posix.Unicode
     Data.CharSet.Unicode.Block
     Data.CharSet.Unicode.Category
 
