--- /dev/null
+USING: help.markup help.syntax io.encodings.latin1 ;
+
+HELP: latin1
+{ $var-description "This is the ISO-8859-1 encoding, also called Latin-1: Western European. It is an 8-bit superset of ASCII which is the default for a mimetype starting with 'text' and provides the characters necessary for most western European languages." }
+{ $see-also "encodings-introduction" } ;
--- /dev/null
+USING: arrays io.encodings.latin1 io.encodings.string strings
+tools.test ;
+
+{ B{ CHAR: f CHAR: o CHAR: o } } [ "foo" latin1 encode ] unit-test
+
+[ { 256 } >string latin1 encode ] must-fail
+
+{ B{ 255 } } [ { 255 } >string latin1 encode ] unit-test
+
+{ "bar" } [ "bar" latin1 decode ] unit-test
+
+{ { CHAR: b 233 CHAR: r } } [
+ B{ CHAR: b 233 CHAR: r } latin1 decode >array
+] unit-test
--- /dev/null
+USING: io io.encodings io.encodings.iana kernel math ;
+
+IN: io.encodings.latin1
+
+SINGLETON: latin1
+
+M: latin1 encode-char
+ drop over 256 < [ stream-write1 ] [ encode-error ] if ;
+
+M: latin1 decode-char
+ drop stream-read1 [
+ dup 256 < [ drop replacement-char ] unless
+ ] [ f ] if* ;
+
+latin1 "ISO_8859-1:1987" register-encoding