* fix: use Encode to correctly handle utf9 file or directory name
authormitty <mitty@7d2118f6-f56c-43e7-95a2-4bb3031d96e7>
Thu, 24 Jan 2013 15:11:26 +0000 (15:11 +0000)
committermitty <mitty@7d2118f6-f56c-43e7-95a2-4bb3031d96e7>
Thu, 24 Jan 2013 15:11:26 +0000 (15:11 +0000)
 * NFKC replaces much more than expected

git-svn-id: https://lab.mitty.jp/svn/lab/trunk@192 7d2118f6-f56c-43e7-95a2-4bb3031d96e7

misc/findcombinable.pl

index 3e5f51d..7b9d629 100755 (executable)
@@ -4,11 +4,17 @@ use strict;
 use warnings;
 use utf8;
 
+use Encode;
 use Unicode::Normalize qw(NFC NFKC);
+binmode STDOUT => 'encoding(utf8)';
+binmode STDERR => 'encoding(utf8)';
 
 my $top = shift @ARGV || exit;
 if (! -d $top) { exit; }
 
+my $utf8 = find_encoding("utf8");
+$top = $utf8->decode($top);
+
 checkdir($top);
 
 sub match {
@@ -17,9 +23,6 @@ sub match {
     if ($str ne NFC($str)) {
         return 1;
     }
-    if ($str ne NFKC($str)) {
-        return 1;
-    }
     
     return '';
 }
@@ -35,6 +38,7 @@ sub checkdir {
     my @dirs;
     while (my $entry = shift @entries) {
         next if ($entry =~ /^\.+$/);
+        $entry = $utf8->decode($entry);
         if (match($entry)) {
             print "'$target/$entry' can be composed\n";
             next;