W git, gdy core.quotepath = on

魔神転生2.CT konwertuje na \351\255\224\347\245\236\350\273\242\347\224\2372.CT

Jak dekodować / zakodować w Perl lub NodeJs?


Dlaczego chcę to zrobić?

Bo mam stary skrypt Perla na Git

Ale kiedy używam core.quotepath = off

Mój skrypt Perla nie obsługuje Unicode

Stanie się 擳?頠Y?2.CT lub 矇簫?癟瞼?癡罈瞽癟??2.CT

W NodeJs UTF8 działa dobrze, ale w jakiś sposób nie powiedzie się, gdy wykonam trochę GIT CMD

Jak git commit -m . --dry-run --short


To jest mój stary skrypt Perla

0
bluelovers 16 luty 2017, 11:46

2 odpowiedzi

Najlepsza odpowiedź

s{\\(\d{3})}{ chr(oct($1)) }eg. Rezultatem jest UTF-8. Jeśli chcesz, aby punkty kodu Unicode, kontynuuj z decode_utf8.


Może potrzeba również obsługi innych sekwencji ucieczki.

my %escapes = (
   "n"  => "\n",
   "r"  => "\r",
   # ...
);

s{\\(?:([0-7]{3})|(\W)|(\w))}{
   defined($1) ? chr(oct($1)) :
   defined($2) ? $2 :
   $escapes{$3} // do { warn("Unrecognized escapes \\$3"); "\\$3" }
}seg;
0
ikegami 22 luty 2017, 16:57

Istnieje niesamowitą wtyczkę dla węzła. |

# debian
sudo apt-get install unicode-data # optional
# gentoo
sudo emerge unicode-data # optional

npm install unicode
0
Alexandru Olaru 16 luty 2017, 09:07