667
|
1 #!/usr/bin/perl -w
|
|
2
|
|
3 # Convert unicode mappings to nginx configuration file format.
|
|
4
|
|
5 # You may find useful mappings in various places, including
|
|
6 # unicode.org official site:
|
|
7 #
|
|
8 # http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP1251.TXT
|
|
9 # http://www.unicode.org/Public/MAPPINGS/VENDORS/MISC/KOI8-R.TXT
|
|
10
|
|
11 # Needs perl 5.6 or later.
|
|
12
|
|
13 # Written by Maxim Dounin, mdounin@rambler-co.ru
|
|
14
|
|
15 ###############################################################################
|
|
16
|
|
17 require 5.006;
|
|
18
|
|
19 while (<>) {
|
|
20 # Skip comments and empty lines
|
|
21
|
|
22 next if /^#/;
|
|
23 next if /^\s*$/;
|
|
24 chomp;
|
|
25
|
|
26 # Convert mappings
|
|
27
|
|
28 if (/^\s*0x(..)\s*0x(....)\s*(#.*)/) {
|
|
29 # Mapping <from-code> <unicode-code> "#" <unicode-name>
|
|
30 my $cs_code = $1;
|
|
31 my $un_code = $2;
|
|
32 my $un_name = $3;
|
|
33
|
|
34 # Produce UTF-8 sequence from character code;
|
|
35
|
|
36 my $un_utf8 = join('', map { sprintf("%02X", $_) } unpack("C*", pack("U", hex($un_code))));
|
|
37
|
|
38 print " $cs_code $un_utf8 ; $un_name\n";
|
|
39
|
|
40 } else {
|
|
41 warn "Unrecognized line: '$_'";
|
|
42 }
|
|
43 }
|
|
44
|
|
45 ###############################################################################
|