-# Encode/Plain.pm
-
-# ====================================================
-# Autor: n.d.p. / 2001-01-07
-# lm : n.d.p. / 2001-02-25
-# ====================================================
-# Funktion:
-# Codierung von non-ASCII-Zeichen fuer
-# HTML
-# ====================================================
-
-use strict;
-
package Encode::Plain;
-require 5.6.0;
+################################################################################
+# #
+# File: shared/Encode/Plain.pm #
+# #
+# Authors: André Malo <nd@o3media.de> #
+# #
+# Description: Encode text for HTML Output (entities, spaces) #
+# #
+################################################################################
-use vars qw(@EXPORT %sonder %unimap $utf8);
+use strict;
+use vars qw(
+ @EXPORT
+ %sonder
+ %unimap
+ $utf8
+ $v56
+);
+
+################################################################################
+#
+# Version check
+#
+# last modified:
+# $Date$ (GMT)
+# by $Author$
+#
+sub VERSION {(q$Revision$ =~ /([\d.]+)\s*$/)[0] or '0.0'}
-# ====================================================
-# Funktionsexport
-# ====================================================
+$v56 = eval {local $SIG{__DIE__}; require 5.6.0;};
+################################################################################
+#
+# Export
+#
use base qw(Exporter);
@EXPORT = qw(plain multiline toUTF8);
-################################
-# sub plain
+### sub myunpack ###############################################################
+#
+# if perl version < 5.6 use myunpack instead of unpack 'U' ;(
#
-# einfache Sonderzeichen ->
-# Entity-Codierung
-################################
+# Params: $string - UTF8-encoded string to unpack
+#
+# Return: Number - unpacked UTF8
+#
+sub myunpack ($) {
+ return unless defined $_[0];
+
+ my @c = map {ord} split // => shift;
+
+ return ($c[0] & 31) << 6 | $c[1] & 63
+ if (
+ @c == 2
+ and ($c[0] & 224) == 192
+ and ($c[1] & 192) == 128
+ );
+
+ return ($c[0] & 15) << 12 | ($c[1] & 63) << 6 | $c[2] && 63
+ if (
+ @c == 3
+ and ($c[0] & 240) == 224
+ and ($c[1] & 192) == 128
+ and ($c[2] & 192) == 128
+ );
+
+ return;
+}
+### sub plain ##################################################################
+#
+# encode characters of plain text into entities for HTML output
+# (includes < > " &)
+# (excludes space problem)
+#
+# Params: $old - String (or scalar reference) to encode
+# $ref - (optional) (hash reference) Options
+# (-amp -except -utf8)
+#
+# Return: encoded string (or scalar reference)
+#
sub plain ($;$) {
- my ($old,$ref)=@_;
+ my ($old, $ref) = @_;
my $exreg;
- return \'' unless (defined $old);
+ return unless (defined $old);
+
+ my $new = ref ($old) ? $$old : $old;
+ $ref = $ref || {};
+ $new ='' unless (defined $new);
- my $new=(ref ($old))?$$old:$old;;
- $ref=($ref or {});
+ my $unicode = defined ($ref -> {-utf8})
+ ? $ref -> {-utf8}
+ : $utf8;
- # Ausnahmen
- my $except=exists($ref->{-except});
+ # Exceptions
+ #
+ my $except = exists($ref->{-except});
if ($except) {
- # Referenz, also Liste uebergeben -> umwandeln in Regex
if (ref ($ref -> {-except})) {
- $exreg = join ('|',map {quotemeta $_} @{$ref -> {-except}});}
-
- # keine Referenz, also Regex angegeben
+ # turn list into a regex
+ #
+ $exreg = join '|' => map {quotemeta $_} @{$ref -> {-except}};
+ }
else {
+ # quote regex delimiters
+ #
$exreg = $ref -> {-except};
- $exreg =~ s/\//\\\//g;}} # LTS :-)
+ $exreg =~ s|/|\\/|g;
+ }
+ }
+ # encode the &-character
+ #
if (lc($ref->{-amp}) eq 'soft') {
if ($except) {
- $new=~s/($exreg)|(?:\&(?!(?:#[Xx][\da-fA-F]+|#\d+|[a-zA-Z]+);))/(length($1))?$1:'&'/eg;}
-
+ $new=~s/($exreg)|(?:\&(?!(?:#[Xx][\da-fA-F]+|#\d+|[a-zA-Z]+);))/defined($1)?$1:'&'/eg;
+ }
else {
- $new=~s/\&(?!(?:#[Xx][\da-fA-F]+|#\d+|[a-zA-Z]+);)/&/g;}}
-
+ $new=~s/\&(?!(?:#[Xx][\da-fA-F]+|#\d+|[a-zA-Z]+);)/&/g;
+ }
+ }
elsif (lc($ref->{-amp}) ne 'no') {
if ($except) {
- $new=~s/($exreg)|\&/(length($1))?$1:'&'/eg;}
-
+ $new=~s/($exreg)|\&/defined($1)?$1:'&'/eg;
+ }
else {
- $new=~s/\&/&/g;}}
+ $new=~s/\&/&/g;
+ }
+ }
- # Weitere Zeichen
+ # further characters
+ #
if ($except) {
- $new =~ s/($exreg)|</(length($1))?$1:'<'/eg; # HTML ausschalten
- $new =~ s/($exreg)|>/(length($1))?$1:'>'/eg;
- $new =~ s/($exreg)|\|/(length($1))?$1:'|'/eg; # nich wahr
- $new =~ s/($exreg)|"/(length($1))?$1:'"'/eg; # Diese Zeile wird den Bannerklickern
- # zu schaffen machen, sowas aber auch...
-
- # Der grosse Hash
- if ($utf8 or $ref -> {-utf8}) {
- my $x;
- $new =~ s/($exreg)|([\300-\337][\200-\277]|[\340-\357][\200-\277][\200-\277])/
- length($1)?$1:(exists($unimap{$x = unpack('U',$2)})?$unimap{$x}:"&#$x;")/eg;}
-
- $new =~ s/($exreg)|([\177-\377])/(length($1))?$1:$sonder{$2}/eg;}
+ $new =~ s/($exreg)|</defined($1)?$1:'<'/eg;
+ $new =~ s/($exreg)|>/defined($1)?$1:'>'/eg;
+ $new =~ s/($exreg)|"/defined($1)?$1:'"'/eg;
+ # the big hash
+ #
+ if ($unicode) {
+ my $x;
+ if ($v56) {
+ $new =~ s/($exreg)|([\300-\337][\200-\277]|[\340-\357][\200-\277][\200-\277])/
+ defined($1)
+ ? $1
+ : ( exists($unimap{$x = unpack('U',$2)})
+ ? $unimap{$x}
+ : "&#$x;"
+ )
+ /eg;
+ }
+ else {
+ $new =~ s/($exreg)|([\300-\337][\200-\277]|[\340-\357][\200-\277][\200-\277])/
+ defined($1)
+ ? $1
+ : ( exists($unimap{$x = myunpack($2)})
+ ? $unimap{$x}
+ : "&#$x;"
+ )
+ /eg;
+ }
+ }
+ $new =~ s/($exreg)|([\177-\377])/defined($1)?$1:$sonder{$2}/eg;
+ }
else {
+ # no exceptions
+ #
$new =~ s/</</g;
$new =~ s/>/>/g;
- $new =~ s/\|/|/g;
$new =~ s/"/"/g;
- # Der grosse Hash
- if ($utf8 or $ref -> {-utf8}) {
+ # the big hash
+ #
+ if ($unicode) {
my $x;
- $new =~ s/([\300-\337][\200-\277]|[\340-\357][\200-\277][\200-\277])/
- exists($unimap{$x = unpack('U',$1)})?$unimap{$x}:"&#$x;"/eg;}
-
- $new =~ s/([\177-\377])/$sonder{$1}/g;}
-
- # Zeichen <= 31
- $new=~s/([\001-\010\013\014\016-\037])/'&#'.ord($1).';'/eg;
+ if ($v56) {
+ $new =~ s/([\300-\337][\200-\277]|[\340-\357][\200-\277][\200-\277])/
+ exists($unimap{$x = unpack('U',$1)})
+ ? $unimap{$x}
+ : "&#$x;"
+ /eg;
+ }
+ else {
+ $new =~ s/([\300-\337][\200-\277]|[\340-\357][\200-\277][\200-\277])/
+ exists($unimap{$x = myunpack($1)})
+ ? $unimap{$x}
+ : "&#$x;"
+ /eg;
+ }
+ }
+ $new =~ s/([\177-\377])/$sonder{$1}/g;
+ }
+
+ # characters < 32, but whitespaces
+ #
+ $new=~s/([^\041-\377\000\s])/
+ '&#' . ord($1) . ';'
+ /eg;
$new=~s/\000/ /g;
- # Rueckgabe
- ref($old)?\$new:$new;
+ # return
+ #
+ ref $old
+ ? \$new
+ : $new;
}
-################################
-# sub multiline
+### sub multiline ##############################################################
+#
+# solve the space problem
+#
+# Params: $old - String (or scalar reference): text to encode
#
-# Whitespacecodierung
-# fuer Leerzeilen
-################################
+# Return: scalar reference: encoded string
+#
+sub multiline ($) {
+ my $old = shift;
+ my $string=(ref ($old))
+ ? $$old
+ : $old;
-sub multiline {
- my $old=shift;
- my $string=(ref ($old))?$$old:$old;
+ $string='' unless (defined $string);
- # Zeilenumbrueche normalisieren
+ # normalize newlines
+ #
$string=~s/\015\012|\015|\012/\n/g;
- # Zeilenumbrueche in <br> umwandeln
- $string=~s/\n/<br>/g;
+ # turn \n into <br>
+ #
+ $string=~s!\n!<br />!g;
- # mehr als ein aufeinanderfolgendes
- # Leerzeichen in feste Leerzeichen umwandeln
+ # more than 1 space =>
+ #
$string=~s/(\s\s+)/(' ' x (length($1)-1)) . ' '/eg;
- # Leerzeichen nach einem <br> in feste
- # Spaces umwandeln
- $string=~s/(?:^|(<br>))\s/$1 /g;
+ # Single Spaces after <br> =>
+ # (save ascii arts ;)
+ #
+ $string=~s!(?:^|(<br(?:\s*/)?>))\s!($1?$1:'').' '!eg;
- # Rueckgabe
+ # return
+ #
\$string;
}
+### sub toUTF8 #################################################################
+#
+# map ISO-8859-1 to UTF8
+#
+# Params: String or scalar reference: string to map
+#
+# Return: String or scalar reference: mapped string
+#
sub toUTF8 ($) {
my $ref = shift;
- my $string = ref($ref)?$$ref:$ref;
- no warnings 'utf8';
-
- $string =~ tr/\x80-\xff//CU;
-
- ref($ref)?\$string:$string;
+ my $string = ref($ref)
+ ? $$ref
+ : $ref;
+
+ $string =~ s
+ {([\x80-\xff])}
+ { chr((ord ($1) >> 6) | 192)
+ .chr((ord ($1) & 191))
+ }eg;
+
+ ref($ref)
+ ? \$string
+ : $string;
}
-# ====================================================
-# Modulinitialisierung
-# ====================================================
-
+################################################################################
+#
+# package init
+#
BEGIN {
$utf8 = 0;
- # Latin 1 + geraten
- %sonder=("\177" => '', # Delete-Zeichen
- "\200" => '€', # Euro-Zeichen
- "\201" => 'ü', # ue - DOS-Zeichensatz
- "\202" => '‚', # einfaches Anfuehrungszeichen unten
- "\203" => 'ƒ', # forte
- "\204" => '„', # doppelte Anfuehrungszeichen unten
- "\205" => '…', # drei punkte
- "\206" => '†', # dagger
- "\207" => '‡', # Dagger
- "\210" => 'ˆ', # circ
- "\211" => '‰', # Promille
- "\212" => 'Š', # so ein S mit Haken drueber :-)
- "\213" => '‹', # lsaquo
- "\214" => 'Œ', # OE (so verhakelt - daenisch?) wer weiss das schon
- "\215" => 'ì', # Codepage 850;
- "\216" => 'Ž', # Z mit Haken drueber (Latin Extended B)
- "\217" => 'Å', # Codepage 850 (Win)
- "\220" => 'ü', # ue - Mac-Zeichensatz
- "\221" => "'", # einfache Anfuehrungszeichen oben
- "\222" => "'", # dito
- "\223" => '“', # doppelte Anfuehrungszeichen oben
- "\224" => '“', # dito
- "\225" => '•', # Bullet
- "\226" => '-', # Bindestrich
- "\227" => '-', # dito
- "\230" => '˜', # tilde...?
- "\231" => '™', # Trade-Mark
- "\232" => 'š', # kleines s mit Haken drueber
- "\233" => '›', # rsaquo;
- "\234" => 'œ', # oe verhakelt
- "\235" => 'Ø', # Codepage 850 (Win)
- "\236" => '×', # Codepage 850 (Win)
- "\237" => 'Ÿ', # Y mit Punkten drueber
- "\240" => ' ', # nbsp;
- "\241" => '¡', # umgedrehtes !
- "\242" => '¢', # cent-Zeichen
- "\243" => '£', # (engl.)Pfund-Zeichen
- "\244" => '¤', # Waehrungszeichen
- "\245" => '¥', # Yen halt :-)
- "\246" => '¦', # eigentlich soll es wohl ein | sein .-)
- "\247" => '§', # Paragraph
- "\250" => '¨', # zwei Punkte oben
- "\251" => '©', # (C)
- "\252" => 'ª', # hochgestelltes unterstrichenes a
- "\253" => '«', # left-pointing double angle quotation mark (besser koennte ichs auch nicht beschreiben...)
- "\254" => '¬', # Negationszeichen
- "\255" => '-', # Bindestrich
- "\256" => '®', # (R)
- "\257" => 'ß', # sz, was auch immer fuern Zeichensatz (DOS?)
- "\260" => '°', # Grad-Zeichen
- "\261" => '±', # Plusminus
- "\262" => '²', # hoch 2
- "\263" => '³', # hoch 3
- "\264" => '‚', # einf. anfuehrungszeichen unten
- "\265" => 'µ', # my-Zeichen (griech)
- "\266" => '¶', # Absatzzeichen
- "\267" => '·', # Mal-Zeichen
- "\270" => '¸',
- "\271" => '¹', # hoch 1
- "\272" => 'º', # masculine ordinal indicator (spanish)
- "\273" => '»', # right-pointing double angle quotation mark
- "\274" => '¼', # 1/4
- "\275" => '½', # 1/2
- "\276" => '¾', # 3/4
- "\277" => '¿', # umgedrehtes ?
- "\300" => 'À',
- "\301" => 'Á',
- "\302" => 'Â',
- "\303" => 'Ã',
- "\304" => 'Ä',
- "\305" => 'Å',
- "\306" => 'Æ',
- "\307" => 'Ç',
- "\310" => 'È',
- "\311" => 'É',
- "\312" => 'Ê',
- "\313" => 'Ë',
- "\314" => 'Ì',
- "\315" => 'Í',
- "\316" => 'Î',
- "\317" => 'Ï',
- "\320" => 'Ð', # keine Ahnung, was das wohl sein soll, auf jeden Fall was islaendisches...
- "\321" => 'Ñ',
- "\322" => 'Ò',
- "\323" => 'Ó',
- "\324" => 'Ô',
- "\325" => 'Õ',
- "\326" => 'Ö',
- "\327" => '×', # eigentlich × funzt afaik aber nicht aufm Mac (ob das hier funktioniert, weiss ich nicht)
- "\330" => 'Ø',
- "\331" => 'Ù',
- "\332" => 'Ú',
- "\333" => 'Û',
- "\334" => 'Ü',
- "\335" => 'Ý',
- "\336" => 'Þ',
- "\337" => 'ß',
- "\340" => 'à',
- "\341" => 'á',
- "\342" => 'â',
- "\343" => 'ã',
- "\344" => 'ä',
- "\345" => 'å',
- "\346" => 'æ',
- "\347" => 'ç',
- "\350" => 'è',
- "\351" => 'é',
- "\352" => 'ê',
- "\353" => 'ë',
- "\354" => 'ì',
- "\355" => 'í',
- "\356" => 'î',
- "\357" => 'ï',
- "\360" => 'ð',
- "\361" => 'ñ',
- "\362" => 'ò',
- "\363" => 'ó',
- "\364" => 'ô',
- "\365" => 'õ',
- "\366" => 'ö',
- "\367" => '÷',
- "\370" => 'ø',
- "\371" => 'ù',
- "\372" => 'ú',
- "\373" => 'û',
- "\374" => 'ü',
- "\375" => 'ý',
- "\376" => 'þ',
- "\377" => 'ÿ');
+ # Latin 1 + guessed
+ #
+ %sonder=(
+ "\177" => '',
+ "\200" => '€',
+ "\201" => 'ü',
+ "\202" => '‚',
+ "\203" => 'ƒ',
+ "\204" => '„',
+ "\205" => '…',
+ "\206" => '†',
+ "\207" => '‡',
+ "\210" => 'ˆ',
+ "\211" => '‰',
+ "\212" => 'Š',
+ "\213" => '‹',
+ "\214" => 'Œ',
+ "\215" => 'ì',
+ "\216" => 'Ž',
+ "\217" => 'Å',
+ "\220" => 'ü',
+ "\221" => "'",
+ "\222" => "'",
+ "\223" => '“',
+ "\224" => '“',
+ "\225" => '•',
+ "\226" => '-',
+ "\227" => '-',
+ "\230" => '˜',
+ "\231" => '™',
+ "\232" => 'š',
+ "\233" => '›',
+ "\234" => 'œ',
+ "\235" => 'Ø',
+ "\236" => '×',
+ "\237" => 'Ÿ',
+ "\240" => ' ',
+ "\241" => '¡',
+ "\242" => '¢',
+ "\243" => '£',
+ "\244" => '¤',
+ "\245" => '¥',
+ "\246" => '¦',
+ "\247" => '§',
+ "\250" => '¨',
+ "\251" => '©',
+ "\252" => 'ª',
+ "\253" => '«',
+ "\254" => '¬',
+ "\255" => '-',
+ "\256" => '®',
+ "\257" => 'ß',
+ "\260" => '°',
+ "\261" => '±',
+ "\262" => '²',
+ "\263" => '³',
+ "\264" => '´',
+ "\265" => 'µ',
+ "\266" => '¶',
+ "\267" => '·',
+ "\270" => '¸',
+ "\271" => '¹',
+ "\272" => 'º',
+ "\273" => '»',
+ "\274" => '¼',
+ "\275" => '½',
+ "\276" => '¾',
+ "\277" => '¿',
+ "\300" => 'À',
+ "\301" => 'Á',
+ "\302" => 'Â',
+ "\303" => 'Ã',
+ "\304" => 'Ä',
+ "\305" => 'Å',
+ "\306" => 'Æ',
+ "\307" => 'Ç',
+ "\310" => 'È',
+ "\311" => 'É',
+ "\312" => 'Ê',
+ "\313" => 'Ë',
+ "\314" => 'Ì',
+ "\315" => 'Í',
+ "\316" => 'Î',
+ "\317" => 'Ï',
+ "\320" => 'Ð',
+ "\321" => 'Ñ',
+ "\322" => 'Ò',
+ "\323" => 'Ó',
+ "\324" => 'Ô',
+ "\325" => 'Õ',
+ "\326" => 'Ö',
+ "\327" => '×',
+ "\330" => 'Ø',
+ "\331" => 'Ù',
+ "\332" => 'Ú',
+ "\333" => 'Û',
+ "\334" => 'Ü',
+ "\335" => 'Ý',
+ "\336" => 'Þ',
+ "\337" => 'ß',
+ "\340" => 'à',
+ "\341" => 'á',
+ "\342" => 'â',
+ "\343" => 'ã',
+ "\344" => 'ä',
+ "\345" => 'å',
+ "\346" => 'æ',
+ "\347" => 'ç',
+ "\350" => 'è',
+ "\351" => 'é',
+ "\352" => 'ê',
+ "\353" => 'ë',
+ "\354" => 'ì',
+ "\355" => 'í',
+ "\356" => 'î',
+ "\357" => 'ï',
+ "\360" => 'ð',
+ "\361" => 'ñ',
+ "\362" => 'ò',
+ "\363" => 'ó',
+ "\364" => 'ô',
+ "\365" => 'õ',
+ "\366" => 'ö',
+ "\367" => '÷',
+ "\370" => 'ø',
+ "\371" => 'ù',
+ "\372" => 'ú',
+ "\373" => 'û',
+ "\374" => 'ü',
+ "\375" => 'ý',
+ "\376" => 'þ',
+ "\377" => 'ÿ'
+ );
# Unicode-Mapping
- %unimap=(128 => '€',
- 129 => 'ü',
- 130 => '‚',
- 131 => 'ƒ',
- 132 => '„',
- 133 => '…',
- 134 => '†',
- 135 => '‡',
- 136 => 'ˆ',
- 137 => '‰',
- 138 => 'Š',
- 139 => '‹',
- 140 => 'Œ',
- 141 => 'ì',
- 142 => 'Ž',
- 143 => 'Å',
- 144 => 'ü',
- 145 => "'",
- 146 => "'",
- 147 => '“',
- 148 => '“',
- 149 => '•',
- 150 => '-',
- 151 => '-',
- 152 => '˜',
- 153 => '™',
- 154 => 'š',
- 155 => '›',
- 156 => 'œ',
- 157 => 'Ø',
- 158 => '×',
- 159 => 'Ÿ',
- 160 => ' ',
- 163 => '£',
- 165 => '¥',
- 167 => '§',
- 169 => '©',
- 171 => '«',
- 173 => '-',
- 174 => '®',
- 175 => 'ß',
- 180 => '‚',
- 184 => '¸',
- 185 => '¹',
- 187 => '»',
- 192 => 'À',
- 193 => 'Á',
- 194 => 'Â',
- 195 => 'Ã',
- 196 => 'Ä',
- 197 => 'Å',
- 198 => 'Æ',
- 199 => 'Ç',
- 200 => 'È',
- 201 => 'É',
- 202 => 'Ê',
- 203 => 'Ë',
- 204 => 'Ì',
- 205 => 'Í',
- 206 => 'Î',
- 207 => 'Ï',
- 208 => 'Ð',
- 209 => 'Ñ',
- 210 => 'Ò',
- 211 => 'Ó',
- 212 => 'Ô',
- 213 => 'Õ',
- 214 => 'Ö',
- 216 => 'Ø',
- 217 => 'Ù',
- 218 => 'Ú',
- 219 => 'Û',
- 220 => 'Ü',
- 221 => 'Ý',
- 222 => 'Þ',
- 223 => 'ß',
- 224 => 'à',
- 225 => 'á',
- 226 => 'â',
- 227 => 'ã',
- 228 => 'ä',
- 229 => 'å',
- 230 => 'æ',
- 231 => 'ç',
- 232 => 'è',
- 233 => 'é',
- 234 => 'ê',
- 235 => 'ë',
- 236 => 'ì',
- 237 => 'í',
- 238 => 'î',
- 239 => 'ï',
- 240 => 'ð',
- 241 => 'ñ',
- 242 => 'ò',
- 243 => 'ó',
- 244 => 'ô',
- 245 => 'õ',
- 246 => 'ö',
- 247 => '÷',
- 248 => 'ø',
- 249 => 'ù',
- 250 => 'ú',
- 251 => 'û',
- 252 => 'ü',
- 253 => 'ý',
- 254 => 'þ',
- 255 => 'ÿ');
+ %unimap=(
+ 128 => '€',
+ 129 => 'ü',
+ 130 => '‚',
+ 131 => 'ƒ',
+ 132 => '„',
+ 133 => '…',
+ 134 => '†',
+ 135 => '‡',
+ 136 => 'ˆ',
+ 137 => '‰',
+ 138 => 'Š',
+ 139 => '‹',
+ 140 => 'Œ',
+ 141 => 'ì',
+ 142 => 'Ž',
+ 143 => 'Å',
+ 144 => 'ü',
+ 145 => "'",
+ 146 => "'",
+ 147 => '“',
+ 148 => '“',
+ 149 => '•',
+ 150 => '-',
+ 151 => '-',
+ 152 => '˜',
+ 153 => '™',
+ 154 => 'š',
+ 155 => '›',
+ 156 => 'œ',
+ 157 => 'Ø',
+ 158 => '×',
+ 159 => 'Ÿ',
+ 160 => ' ',
+ 163 => '£',
+ 165 => '¥',
+ 167 => '§',
+ 169 => '©',
+ 171 => '«',
+ 173 => '-',
+ 174 => '®',
+ 175 => 'ß',
+ 180 => '´',
+ 184 => '¸',
+ 185 => '¹',
+ 187 => '»',
+ 192 => 'À',
+ 193 => 'Á',
+ 194 => 'Â',
+ 195 => 'Ã',
+ 196 => 'Ä',
+ 197 => 'Å',
+ 198 => 'Æ',
+ 199 => 'Ç',
+ 200 => 'È',
+ 201 => 'É',
+ 202 => 'Ê',
+ 203 => 'Ë',
+ 204 => 'Ì',
+ 205 => 'Í',
+ 206 => 'Î',
+ 207 => 'Ï',
+ 208 => 'Ð',
+ 209 => 'Ñ',
+ 210 => 'Ò',
+ 211 => 'Ó',
+ 212 => 'Ô',
+ 213 => 'Õ',
+ 214 => 'Ö',
+ 216 => 'Ø',
+ 217 => 'Ù',
+ 218 => 'Ú',
+ 219 => 'Û',
+ 220 => 'Ü',
+ 221 => 'Ý',
+ 222 => 'Þ',
+ 223 => 'ß',
+ 224 => 'à',
+ 225 => 'á',
+ 226 => 'â',
+ 227 => 'ã',
+ 228 => 'ä',
+ 229 => 'å',
+ 230 => 'æ',
+ 231 => 'ç',
+ 232 => 'è',
+ 233 => 'é',
+ 234 => 'ê',
+ 235 => 'ë',
+ 236 => 'ì',
+ 237 => 'í',
+ 238 => 'î',
+ 239 => 'ï',
+ 240 => 'ð',
+ 241 => 'ñ',
+ 242 => 'ò',
+ 243 => 'ó',
+ 244 => 'ô',
+ 245 => 'õ',
+ 246 => 'ö',
+ 247 => '÷',
+ 248 => 'ø',
+ 249 => 'ù',
+ 250 => 'ú',
+ 251 => 'û',
+ 252 => 'ü',
+ 253 => 'ý',
+ 254 => 'þ',
+ 255 => 'ÿ'
+ );
}
-# making require happy
+# keep 'require' happy
1;
-# ====================================================
-# end of Encode::Plain
-# ====================================================
\ No newline at end of file
+#
+#
+### end of Encode::Plain #######################################################
\ No newline at end of file