use Cwd;
 use File::Find;
 use File::Spec::Functions;
+use open qw(:std :encoding(UTF-8));
 
 my $cur_path = fastgetcwd() . '/';
 my $lk_path = "./";
        my $text = do { local($/) ; <$f> };
        close($f);
 
-       my @poss_addr = $text =~ m$[A-Za-zÀ-ÿ\"\' \,\.\+-]*\s*[\,]*\s*[\(\<\{]{0,1}[A-Za-z0-9_\.\+-]+\@[A-Za-z0-9\.-]+\.[A-Za-z0-9]+[\)\>\}]{0,1}$g;
+       my @poss_addr = $text =~ m$[\p{L}\"\' \,\.\+-]*\s*[\,]*\s*[\(\<\{]{0,1}[A-Za-z0-9_\.\+-]+\@[A-Za-z0-9\.-]+\.[A-Za-z0-9]+[\)\>\}]{0,1}$g;
        push(@file_emails, clean_file_emails(@poss_addr));
     }
 }
     return 0;
 }
 
+sub escape_name {
+    my ($name) = @_;
+
+    if ($name =~ /[^\w \-]/ai) {        ##has "must quote" chars
+       $name =~ s/(?<!\\)"/\\"/g;       ##escape quotes
+       $name = "\"$name\"";
+    }
+
+    return $name;
+}
+
 sub parse_email {
     my ($formatted_email) = @_;
 
 
     $name =~ s/^\s+|\s+$//g;
     $name =~ s/^\"|\"$//g;
+    $name = escape_name($name);
     $address =~ s/^\s+|\s+$//g;
 
-    if ($name =~ /[^\w \-]/i) {         ##has "must quote" chars
-       $name =~ s/(?<!\\)"/\\"/g;       ##escape quotes
-       $name = "\"$name\"";
-    }
-
     return ($name, $address);
 }
 
 
     $name =~ s/^\s+|\s+$//g;
     $name =~ s/^\"|\"$//g;
+    $name = escape_name($name);
     $address =~ s/^\s+|\s+$//g;
 
-    if ($name =~ /[^\w \-]/i) {          ##has "must quote" chars
-       $name =~ s/(?<!\\)"/\\"/g;       ##escape quotes
-       $name = "\"$name\"";
-    }
-
     if ($usename) {
        if ("$name" eq "") {
            $formatted_email = "$address";
            $name = "";
        }
 
-       my @nw = split(/[^A-Za-zÀ-ÿ\'\,\.\+-]/, $name);
+       my @nw = split(/[^\p{L}\'\,\.\+-]/, $name);
        if (@nw > 2) {
            my $first = $nw[@nw - 3];
            my $middle = $nw[@nw - 2];
            my $last = $nw[@nw - 1];
 
-           if (((length($first) == 1 && $first =~ m/[A-Za-z]/) ||
+           if (((length($first) == 1 && $first =~ m/\p{L}/) ||
                 (length($first) == 2 && substr($first, -1) eq ".")) ||
                (length($middle) == 1 ||
                 (length($middle) == 2 && substr($middle, -1) eq "."))) {