Cinnamonのインストールが出来たら使ってみます。
NKFの使い方については「Rubyist Magazine 標準添付ライブラリ紹介 【第 3 回】 Kconv/NKF/Iconv」のNKFの部分に丁寧な説明があります。
-- 「標準添付ライブラリ紹介 【第 3 回】 Kconv/NKF/Iconv」より -- http://jp.rubyist.net/magazine/?0009-BundledLibraries module Main where import Data.Char import Codec.Binary.UTF8.String import Cinnamon.Ucs import Cinnamon.Nkf suuji="0123456789あいうABC" kana ="カタカナ" hira="ひらがな" katahira ="カタカナとひらがなを交換" str ="禁則を考慮した折り返しを行います。禁則は通常半角 60 文字で行われますが、"++ "明示的に -f40 と指定すると半角 40 文字で、 -f80 と指定すると半角 80 文字"++ "で折り返します。通常、禁則は半角 10 文字までの範囲で禁則文字をぶら下げ、"++ "それ以上は強制的に改行しますが、明示的に -f40-5 と指定すると強制改行の余地"++ " (fold-margin) を半角 5 文字に指定できます。禁則処理を行わない場合は"++ " -f40-0 などと指定します。-f では改行が全て半角空白に置き換えられてし"++ "まいますが、 -F では改行が保存されます。" main :: IO () main = do putStrLn $ nkf "-m0xZ0Ss" $ ucs4ToSjis suuji -- > 0123456789あいうABC putStrLn $ nkf "-m0xSs --hiragana" $ ucs4ToSjis kana --> かたかな putStrLn $ nkf "-m0xSs --katakana" $ ucs4ToSjis hira -- > ヒラガナ putStrLn $ nkf "-m0xSs --katakana-hiragana" $ ucs4ToSjis katahira -- > かたかなトヒラガナヲ交換 putStrLn $ nkf "-m0xSsf30" $ ucs4ToSjis str {- 禁則を考慮した折り返しを行いま す。禁則は通常半角 60 文字で行 われますが、明示的に -f40 と指 定すると半角 40 文字で、 -f80 と指定すると半角 80 文字で折り 返します。通常、禁則は半角 10 文字までの範囲で禁則文字をぶら 下げ、それ以上は強制的に改行し ますが、明示的に -f40-5 と指定 すると強制改行の余地 (fold-margin) を半角 5 文字に指定できます。 禁則処理を行わない場合は -f40- 0 などと指定します。-f では改 行が全て半角空白に置き換えられ てしまいますが、 -F では改行が 保存されます。 -}
> :m + Data.Char Cinnamon Numeric > let str=[chr 0x82,chr 0xa0] -- Shift-JIS > putStrLn str -- > あ > let showH = map (\x ->showHex (ord x) "") > showH $ nkf "-s" str -- > ["82","a0"] -- Shift-JIS > showH $ nkf "-e" str -- > ["a4","a2"] -- EUC-JP > showH $ nkf "-j" str -- > ["1b","24","42","24","22","1b","28","42"] -- ISO-2022-JP > showH $ nkf "-w" str -- > ["e3","81","82"] -- UTF-8N (BOM なし) > showH $ nkf "-m0Sw8" str -- > ["ef","bb","bf","e3","81","82"] -- UTF-8 BOM (BOM:Byte Order Mark あり) > showH $ nkf "-m0Sw80" str -- > ["e3","81","82"] -- UTF-8N > showH $ nkf "-m0Sw16" str -- > ["30","42"] -- UTF-16BE N (Big-endian,BOM なし) > showH $ nkf "-m0Sw16B" str -- > ["fe","ff","30","42"] -- UTF-16BE BOM(Big-endian,BOM あり) > showH $ nkf "-m0Sw16B0" str -- > ["30","42"] -- UTF-16BE N > showH $ nkf "-m0Sw16L" str -- > ["ff","fe","42","30"] -- UTF-16LE BOM(Little-endian,BOM あり) > showH $ nkf "-m0Sw16L0" str -- > ["42","30"] -- UTF-16LE N (Little-endian,BOM なし) -- 改行コードの変更 > showH "abc\n" -- > ["61","62","63","a"] > showH $ nkf "-Lw" "abc\n" -- > ["61","62","63","d","a"] > showH $ nkf "-Lm" "abc\n" -- > ["61","62","63","d"] > showH $ nkf "-Lu" $ nkf "-Lm" "abc\n" -- > ["61","62","63","a"]