code-page-0.2: Windows code page library for Haskell

Copyright(C) 2016-2017 Ryan Scott
LicenseBSD-style (see the file LICENSE)
MaintainerRyan Scott
StabilityProvisional
PortabilityPortable
Safe HaskellSafe
LanguageHaskell2010

System.IO.CodePage

Contents

Description

Exports functions which adjust code pages on Windows, and do nothing on other operating systems.

Synopsis

Adjusting CodePages

withCP65001 :: IO a -> IO a #

Sets the code page for an action to UTF-8 as necessary.

withCP1200 :: IO a -> IO a #

Sets the code page for an action to UTF-16LE as necessary.

withCP1201 :: IO a -> IO a #

Sets the code page for an action to UTF-16BE as necessary.

withCP12000 :: IO a -> IO a #

Sets the code page for an action to UTF-32LE as necessary.

withCP12001 :: IO a -> IO a #

Sets the code page for an action to UTF-32BE as necessary.

withCP1252 :: IO a -> IO a #

Sets the code page for an action to Latin1 as necessary.

withCodePage :: CodePage -> IO a -> IO a #

Sets the code page for an action as necessary.

On operating systems besides Windows, this will make an effort to change the current TextEncoding to something that is equivalent to the supplied CodePage. Currently, the only supported CodePages on non-Windows OSes are cp65001, cp1200, cp1201, cp12000, and cp12001. Supplying any other CodePage will result in a runtime error on non-Windows OSes. (If you would like to configure this behavior, use withCodePageOptions instead.)

withCodePageOptions :: Options -> CodePage -> IO a -> IO a #

Sets the code page for an action as necessary. If the Bool argument is True, this function will emit a warning to stderr indicating that the code page has been changed. (withCodePage sets this argument to False.)

Notable CodePages

type CodePage = Word32 #

A numeric type representing Windows code pages.

cp65001 :: CodePage #

The UTF-8 code page.

cp1200 :: CodePage #

The UTF-16LE code page.

cp1201 :: CodePage #

The UTF-16BE code page.

cp12000 :: CodePage #

The UTF-32LE code page.

cp12001 :: CodePage #

The UTF-32BE code page.

cp1252 :: CodePage #

The Latin1 code page.

Options

data Options #

Options that specify how withCodePage and friends should work.

Record fields of Options

chatty :: Options -> Bool #

If True, emit a warning to stderr indicating that the code page has been changed. If False, don't emit any warnings.

nonWindowsBehavior :: Options -> NonWindowsBehavior #

Configures how withCodePage and friends should work on non-Windows operating systems.

NonWindowsBehavior

data NonWindowsBehavior #

Specifies how withCodePage and friends should work on operating systems other than Windows.

Constructing NonWindowsBehavior

nonWindowsDoNothing :: NonWindowsBehavior #

Don't do anything at all on non-Windows OSes.

nonWindowsFallbackCodePageEncoding :: (CodePage -> TextEncoding) -> NonWindowsBehavior #

On non-Windows OSes, change the TextEncoding by converting the CodePage argument to a TextEncoding using the supplied function.

defaultFallbackCodePageEncoding :: CodePage -> TextEncoding #

Provides a best-effort attempt to convert a CodePage to a TextEncoding on non-Windows OSes. Errors if given a CodePage that it doesn't know how to convert.